Ayuda:Gnuplot

De Wikipedia, la enciclopedia libre

Gnuplot es un software de código disponible y libre de amplio uso en la comunidad científica, que genera gráficos en formatos a elección como Portable Network Graphics (png), Gráficos vectoriales escalables (svg), Graphics Interchange Format (gif), PostScript (ps) y otros a partir de series de datos o funciones matemáticas. Gnuplot determina los rangos de las variables y la escala adecuada para para representarlos, la subdivisión de los ejes de abscisa y ordenada. (La abscisa es la coordenada horizontal y se representa habitualmente por la letra x, mientras que la ordenada es la coordenada vertical y se representa por la y.)

Instalación[editar]

Ver instrucciones en la página central de Gnuplot: http://www.gnuplot.info/

Modos de operación[editar]

Gnuplot puede operar.

  • desde un terminal (informática) de gnuplot en forma interactiva. No es didáctico en el sentido de que los comandos dados no quedan a la vista sino que desaparecen de la pantalla después de un par de nuevas órdenes.
  • responder llamadas desde programas en Perl y Python por medio de intefaces. Este método requiere conocimientos sólidos de programación.
  • ejecutando un script (que contiene los comandos u órdenes a cumplir en formato texto) en un terminal (informática) del sistema operativo (p.e. Bash).

Aquí solo trataremos esta última, la opción script. Los datos a graficar pueden ser incluidos en el mismo script. Pero, para separar los problemas, usaremos un archivo separado.[notas 1]

Ambiente de desarrollo[editar]

El ambiente utilizado para los ejemplos es el sistema operativo Linux, con la distribución Ubunto 18.04 , con Gnuplot 5.2. instalado.

A partir de algún momento es indispensable recurrir a la documentación oficial de gnuplot, disponible en http://www.gnuplot.info/ .

Básicos: tipos de letras, abreviaturas[editar]

Tipos de letras, markup, posición, etc.

Gnuplot puede representar, en un plano de dos dimensiones, series de datos numéricos y también curvas definidas por funciones matemáticas.

Puede proyectar superficies en el espacio de tres dimensiones sobre un plano de dos dimensiones, caso que veremos posteriormente.

Para el ingreso de los datos a graficar existen varias posibilidades:

  1. una función matemática,
  2. un archivo de texto (columnas) con los datos, separado del script que contiene las órdenes,
  3. un archivo binario para imágenes que se incluyen en el diagrama a producir,
  4. un embudo ("pipe" o "|") que envía un flujo de datos desde otro programa o
  5. columnas agregadas al final del script.

Por razones didácticas utilizaremos aquí un archivo de texto, separado del script, con dos o más columnas. Cada columna puede ser aplicada al eje de las abscisas o al de las ordenadas. Con algunas restricciones gnuplot también puede representar series que contengan strings (texto). Pero entonces, la otra columna debe ser numérica.[notas 2]

Convenciones para el ingreso de datos[editar]

Para separar las columnas se utiliza un espacio (" "), para señalar las décimas de un número se usa el punto (".") y no la coma (","). La Codificación de caracteres (encoding) es utf-8. Para indicar que se desconoce el valor de un punto de la serie (columna) se utiliza NaN (Not a Number).

Para un valor que contenga dos o más palabras, se debe encerrar el valor con comillas: "Río San Pedro de Inacaliri".[notas 3]

Un comentario comienza con un rombo ("#").

Estas normas son convenciones y pueden ser modificadas de acuerdo a lo indicado en la documentación.

Tipos de letras[editar]

La imagen del lado derecho es una copia traducida de la publicada en gnuplot demo script: enhanced_utf8.dem con posibles usos de tipos de letras, posiciones, etc. El código puede ser visto en la respectiva página de commons que almacena la imagen.

Abreviaturas y ayudas[editar]

Gnuplot admite cualquier abreviatura de comandos que no sea ambigua. Las abreviaturas más conocidas son:

  • u : using
  • w : with
  • lp : linespoints
  • tc : textcolor
  • "" : archivo de datos anterior

Backslah[editar]

A veces al escribir un comando demasiado largo se le "corta" en trozos y se le agrega una barra diagonal invertida ("backslash" en inglés) "\" al final de la línea. Es importante que no existan más caracteres después del backslash. Asi entonces el comando:

plot "datos" using 1:2, "" using 1:3, "" using 1.4

puede quedar como:

plot "datos" using 1:2, \
          "" using 1:3, \
          "" using 1.4

Esto puede facilitar la lectura o la comprensión del script.

Características del tipo de archivo[editar]

Cada tipo de archivo (gif, svg, png, ps, etc) tiene particularidades diferentes. Algunos permiten más o menos colores, tienen más o menos tipos de letras, etc. Una visión sinóptica de las posibilidades se obtiene mediante el comando "test" que genera una imagen con algunas figuras y textos que las muestran.

Script:

set terminal png
set output "ayuda1.png"
test

Datos:

no usa datos externos.

Gnuplot utiliza, en cuanto sea posible, valores default bastante adecuados para dar valores a variables que no han sido definidas por el usuario, en este caso el ancho y alto de la imagen.

Una curva[editar]

Gnuplot-Ayuda2.png

Script ayuda2.gp:

set terminal png
set output 'Gnuplot-Ayuda2.png'
plot 'ayuda2.dat' using 2:3

Datos en 'ayuda2.dat':

ene     1  89.375  69.661  50.817 25.980   8.331   2.023
feb     2  71.917  46.100  26.824  9.358   2.319   0.858
mar     3  30.633  24.430  18.067  9.117   3.011   1.304
abr     4  43.130  33.092  23.859 12.392   4.937   2.486
may     5 158.088 110.296  71.317 30.994  11.104   6.076
jun     6 271.357 199.339 137.198 67.184  27.882  16.634
jul     7 322.921 241.560 169.950 86.790  37.931  23.326
ago     8 163.320 137.924 111.449 71.462  35.940  19.822
sep     9 133.848 109.816  85.511 50.546  22.234  10.818
oct    10 103.302  77.693  54.348 25.744   7.525   1.647
nov    11  99.588  82.178  64.029 36.617  12.266   1.217
dic    12  91.782  76.519  60.607 36.573  15.224   5.537

Ejecución del script:

Yo@miPC:mi/dir/graficos>gnuplot -c ayuda2.gp

El script de 3 líneas elabora un diagrama "png" de 640 × 480 pixels y 4 KB de peso con:

  1. la columna 2 en el eje de las abscisas (horizontal).
  2. la columna 3 en el eje de las ordenadas (vertical).
  3. una pequeña cruz "+" en el lugar (x,y).
  4. una leyenda con el nombre del archivo de datos y las columnas usadas en la esquina superior derecha.
  5. subdivide los ejes con "ticks" (subdivisiones) y sus respectivos valores dentro del eje.
  6. las columnas 1 y 4-8 no son utilizadas y podrían ser borradas sin afectar el resultado. Si se borra la columna 1, se debe cambiar la orden "using 2:3" por "using 1:2".
  7. los colores (violeta, blanco y negro) y la frecuencia de las marcas sobre los ejes son determinados por gnuplot por default.

Más información[editar]

Nuestro primer intento ha resultado bien, pero debemos entregar al lector del diagrama toda la información necesaria para una comprensión cabal del gráfico.

En este caso, las columnas del archivo de datos son promedios estadísticos calculadas a partir de mediciones hechas durante muchos años al caudal del Río Tinguiririca y sirven para generar las curvas de variación estacional que a su vez se utilizan para obtener una estimación racional de la probabilidad de que el caudal del río alcance o exceda una cota determinada. Para dar esa información se debe dar el origen de los datos mediante comentarios, lo que haremos con las dos primeras líneas del archivo de datos:

# url: https://mma.gob.cl/wp-content/uploads/2017/12/Rapel.pdf <-- esto es un comentario
# Tabla 4.7: Tinguiririca en Los Olmos pág. 67 <-- esto es un comentario

Agregamos también una tercera línea, que no es comentario, y que entrega los nombres apropiados de las columnas. Señala el mes en que se estima el caudal y la probabilidad en tanto por ciento (%) de que el caudal alcance o exceda la cota que aparece en la columna y mes respectivo.

mes ord 5% 10% 20% 50% 85% 95%: <-- esto NO es un comentario

Es importante repetir que esa línea no es un comentario, no tiene un rombo "#" al comienzo. El script lleva el comando set key autotitle columnhead por lo que la línea sera leída con los datos, pero interpretada como los nombres de las columnas y no como coordenadas de puntos a graficar.

Gnuplot-ayuda3.png

Script ayuda3.gp:

set terminal png truecolor size 280, 320 font "Helvetica, 10" background rgb "white"
set margins 9,3,3,4 # <left>, <right>, <bottom>, <top>
set output 'gnuplot-ayuda3.png'
set grid
set yrange [0:]
set xlabel "mes"
set ylabel "Caudal (m³/s)"
set title "Curvas de variación estacional de\ncaudales promedio mensual en m³/s\n{/:Bold Río Tinguiririca} en Los Olmos" offset 0,-0.5
set style data line
set key autotitle columnhead textcolor variable samplen 1 spacing 1 left top maxrows 3
plot 'ayuda3.dat' using 2:3 with lines

Datos en ayuda3.dat:

# url: https://mma.gob.cl/wp-content/uploads/2017/12/Rapel.pdf
# Tabla 4.7: Tinguiririca en Los Olmos pág. 67
mes   ord      5%     10%     20%    50%     85%     95%
ene     1  89.375  69.661  50.817 25.980   8.331   2.023
feb     2  71.917  46.100  26.824  9.358   2.319   0.858
mar     3  30.633  24.430  18.067  9.117   3.011   1.304
abr     4  43.130  33.092  23.859 12.392   4.937   2.486
may     5 158.088 110.296  71.317 30.994  11.104   6.076
jun     6 271.357 199.339 137.198 67.184  27.882  16.634
jul     7 322.921 241.560 169.950 86.790  37.931  23.326
ago     8 163.320 137.924 111.449 71.462  35.940  19.822
sep     9 133.848 109.816  85.511 50.546  22.234  10.818
oct    10 103.302  77.693  54.348 25.744   7.525   1.647
nov    11  99.588  82.178  64.029 36.617  12.266   1.217
dic    12  91.782  76.519  60.607 36.573  15.224   5.537

Ejecución del script:

Yo@miPC:mi/dir/graficos>gnuplot -c ayuda3.gp

Con ayuda3.gp hemos graficado el caudal del río que ocurre con una probabilidad del 5%, es decir, una vez cada 20 años. Para eso hemos utilizado varias nuevas órdenes o nuevos parámetros que pasamos a explicar.

set terminal
size 280, 320 las dimensiones en pixels que deseamos para la imagen png.
font "Helvetica, 10" el tipo de letra y el tamaño que se debe utilizar en el gráfico, si no se dicta uno diferente.
background rgb "white" el color del trasfondo de la imagen.
set margins
9,3,3,4 los márgenes a la izquierda, la derecha, abajo y arriba, en ese orden. Son muy importantes porque compiten por el espacio con el diagrama mismo y a su vez no deben ser demasiado escasos porque entonces los rótulos de los ejes de coordenadas no aparecerán.
set grid
ordena dibujar una malla para estimar mejor las coordenadas de los puntos de una curva.
set yrange (también set xrange)
Gnuplot puede calcular muy bien el rango que se necesita para representar una variable en el diagrama. En este caso para la variable "y" sería el rango [40:330]. Sin embargo a veces deseamos solo una parte de el o al contrario incluir otros valores. En este caso ordenamos a gnuplot incluir en el rango de caudales el valor 0 para apreciar mejor la magnitud de la variable. Por eso set yrange [0:]. Lo mismo para el eje x. En este caso pudimos exigir "set xrange [1:12]] para eliminar el mes "0" que no existe. Más adelante veremos una mejor solución.
set ylabel (también set xlabel)
ordena escribir un rótulo "Caudal (m³/s)" paralelo al eje y respectivamente al eje x "mes".
set title
escribe un título en la parte superior del diagrama
texto a escribir: "Curvas de variación estacional de\ncaudales promedio mensual en m³/s\n{/:Bold Río Tinguiririca} en Los Olmos"
formato: normal para "Curvas de variación estacional de\ncaudales promedio mensual en m³/s\n" + "en Los Olmos"
formato: negrilla (Bold) para "Río Tinguiririca"
offset ordena trasladar el título (en este caso lo acerca al diagrama para no perder espacio)
"\n" ordena hacer un salto de línea. (Ver Documentación para otros caracteres.)
"m³" se obtiene con m+^+3 (Ver Documentación para otros símbolos.)
set style data line
Ver Documentación para colores, espesor, tipo, y otras características que se pueden asignar a una línea.
Nótese que gnuplot automáticamente da colores diferentes a las curvas.
set key
Ver ejemplo siguiente
with lines
una línea sencilla debe unir los puntos. El tipo de línea (espesor, continua, con marcas, etc) puede ser diferente, como veremos posteriormente.

Varias curvas[editar]

Para agregar más curvas al mismo diagrama solo es necesario extender la orden

plot 'ayuda3.dat' using 2:3

a la orden:

plot 'ayuda3.dat' using 2:3, 'ayuda3.dat' using 2:4, 'ayuda3.dat' using 2:5, 'ayuda3.dat' using 2:6, 'ayuda3.dat' using 2:7, 'ayuda3.dat' using 2:8

que puede ser abreviada a:

plot 'ayuda3.dat' using 2:3, '' using 2:4, '' using 2:5, '' using 2:6, '' using 2:7, '' using 2:8

El significado de '' using 2:4 es "utilizar el mismo archivo de datos anterior para graficar las columnas 2:4".

Más adelante veremos que existe una manera más corta aún:

plot for [n=3:8] 'ayuda3.dat' using 2:(column(n))

Mediante un Bucle (programación) se repite la representación de los datos de una columna mediante una curva para 6 columnas, desde la 3. a la 8. .

Gnuplot-ayuda4.png

Script ayuda4.gp:

set terminal png truecolor size 280, 320 font "Helvetica, 10" background rgb "white"
set margins 9,3,3,4 # <left>, <right>, <bottom>, <top>
set output 'gnuplot-ayuda4.png'
set grid
set yrange [0:]
set xlabel "mes"
set ylabel "Caudal (m³/s)"
set title "Curvas de variación estacional de\ncaudales promedio mensual en m³/s\n{/:Bold Río Tinguiririca} en Los Olmos" offset 0,-0.5
set style data line
set key autotitle columnhead textcolor variable samplen 1 spacing 1 left top maxrows 3
plot 'ayuda3.dat' using 2:3, 'ayuda3.dat' using 2:4, 'ayuda3.dat' using 2:5, 'ayuda3.dat' using 2:6, 'ayuda3.dat' using 2:7, 'ayuda3.dat' using 2:8

Datos en ayuda3.dat son los mismos del ejemplo anterior:

# url: https://mma.gob.cl/wp-content/uploads/2017/12/Rapel.pdf
# Tabla 4.7: Tinguiririca en Los Olmos pág. 67
mes   ord      5%     10%     20%    50%     85%     95%
ene     1  89.375  69.661  50.817 25.980   8.331   2.023
feb     2  71.917  46.100  26.824  9.358   2.319   0.858
mar     3  30.633  24.430  18.067  9.117   3.011   1.304
abr     4  43.130  33.092  23.859 12.392   4.937   2.486
may     5 158.088 110.296  71.317 30.994  11.104   6.076
jun     6 271.357 199.339 137.198 67.184  27.882  16.634
jul     7 322.921 241.560 169.950 86.790  37.931  23.326
ago     8 163.320 137.924 111.449 71.462  35.940  19.822
sep     9 133.848 109.816  85.511 50.546  22.234  10.818
oct    10 103.302  77.693  54.348 25.744   7.525   1.647
nov    11  99.588  82.178  64.029 36.617  12.266   1.217
dic    12  91.782  76.519  60.607 36.573  15.224   5.537

Ejecución del script:

Yo@miPC:mi/dir/graficos>gnuplot -c ayuda4.gp

Este ejemplo muestra mejor el significado del comando set key

set key
ordena hacer una lista con los nombres de las columnas graficadas y los colores y símbolos utilizados para esa columna. En nuestro ejemplo la lista esta en la esquina superior izquierda.
autotitle columnhead : ordena utilizar los nombres de las columnas que están el la primera línea no-comentario del archivo de datos, en este caso mes ord 5% 10% 20% 50% 85% 95%.
textcolor variable : ordena utilizar diferentes colores para cada curva. Existe una lista interna de colores default que proporciona uno diferente cada vez. Pero también puede ser definido por el usuario, por ejemplo con los definidos en https://github.com/Gnuplotting/gnuplot-palettes
samplen 1 : el largo de la descripción de la línea, el color y el símbolo de una variable.
spacing 1 : el espacio entre las descripciones (cuando son varias columnas
left top : ubicación en el diagrama. Las opciones son left, center, right, top, middle, bottom.
maxrows 3 : número máximo de filas. Implica que se aumentará el número de columnas cuando sea necesario.

Dimensiones[editar]

Aquí hacemos uso de la facilidad con que gnuplot puede graficar funciones matemáticas, en este caso del Seno (trigonometría). Pero nuestro fin es explicar como determinar las dimensiones y origen de coordenadas que utiliza Gnuplot.

Diagrama es aquí el rectángulo encerrado por los ejes x e y de la serie de datos que graficamos.

Canvas o pantalla, es aquí la imagen rectangular completa que produce Gnuplot, en nuestro caso en formato png.

Normalmente gnuplot puede establecer muy adecuadamente las dimensiones de la imagen y no se necesita intervención del usuario. Pero al momento de querer ubicar dentro del diagrama letras, flechas u otros objetos, es importante conocer las coordenadas que gnuplot utiliza en cada caso.

Gnuplot posee 5 diferentes sistemas de coordenadas, todos ellos con un eje horizontal "x" creciente hacia la derecha y un eje vertical "y" creciente hacia arriba. Se diferencian en la ubicación de su origen, en las unidades que utilizan y en el rango que cubren sus variables.

propiedad / nombre first second graph screen character
origen de coordenadas Esquina inferior izquierda del diagrama Esquina inferior izquierda del diagrama Esquina inferior izquierda del diagrama Esquina inferior izquierda de canvas Esquina inferior izquierda del canvas
rango xrange, yrange x2range, y2range 0.0-1.0, 0.0-1.0 0.0-1.0, 0.0-1.0 (depende del tipo de letras)
unidades 1 1 1 1 Ancho y alto del tipo de letra usado
posición de ejes visibles x: hor. abajo
y:vert. izquierda
x:hor. arriba
y:vert. der.
(invisibles) (invisibles) (invisibles)
El script ayuda6.gp dibuja 5 veces un texto en la posición .9,.9, pero cada vez en un sistema de coordenadas diferente: "first", "second", "graph", "screen" y "character". "first" y "second" se sobreponen. El script gira el texto en coordenadas "second" en 45° para diferenciarlos. El texto en coordenadas "screen" es girado en -90° para aparecer completamente en el diagrama.

Script ayuda6.gp:

set terminal png size 500, 500 font "Helvetica, 10"
set output 'Gnuplot-ayuda10.png'
#set loadpath 'gnuplot-palettes-master/'
#load 'blues.pal'
unset key
set size .5, .5
set origin .2, .2
set border 3 lt 2 linewidth 4
set label "at fist 0.9,0.9"      at first     0.9, 0.9 tc ls 3
set label "at second 0.9,0.9"    at second    0.9, 0.9 tc ls 4 rotate by 45
set label "at graph 0.9,0.9"     at graph     0.9, 0.9 tc ls 5
set label "at screen 0.9,0.9"    at screen    0.9, 0.9 tc ls 6 rotate by -90
set label "at character 0.9,0.9" at character 1,1      tc ls 7
plot [0:3.14] sin(x)

Datos:

(no usa datos externos)

Ejecución del script:

Yo@miPC:mi/dir/graficos>gnuplot -c ayuda6.gp

Las dimensiones del canvas se determinan con el comando (para el caso de un png de ancho 300 y alto 500)

set terminal png size 300, 500

En cambio las dimensiones del diagrama mismo son determinadas con la fracción decimal del espacio que se desea ocupar del canvas:

set size 0.8, 0.8

Con la orden anterior se establece que el diagrama ocupará solo el 80% y el 80% del diagrama, respectivamente.

La posición del diagrama con respecto a la esquina inferior izquierda del canvas puede establecerse con la fracción de las repectivos ancho y alto del canvas:

set origin .1, .1

Con "set margins" se puede variar hasta cierto punto, el ancho de los márgenes.

set margins 1,1,1,1 # <left>, <right>, <bottom>, <top>

El valor de los márgenes se da en "ancho" y "alto" del tipo de letra default. Cuando no es posible mover el diagrama tanto, gnuplot interrumpe la ejecución del script y envía un mensaje de error.

Finalmente, con "set borders" se puede determinar las características del borde del diagrama.

set border 3 lt 2 linewidth 4

El valor de "lt 2", abreviatura de "linetype 2", es conocido solo por gnuplot. Normalmente se utiliza solo después de ser definido por el usuario. O se confía en gnuplot. En este caso tiene un color verde y es una línea continua. Con "linewidth 4" definimos el espesor de la línea que enmarca el diagrama y con un "3" (=1+2) determinamos que solo se trace el lado 1 (abajo) y el 2 (izq). El lado derecho (8) y el trazo superior (4) no son dibujados. Cuando todos los lados deben ser dibujados, el parámetro toma el valor 15 (=1+2+4+8).

Columnas[editar]

La palabra "columna" tiene en gnuplot varias acepciones.

  • La primera es la columna de valores que entregamos al programa en el archivo de datos. Nuestra primera columna es "ene, feb, mar, abr, ..."
  • Otra es la ubicación de ese grupo de datos en el archivo. Se le nombra con "1", "2", "3", ... .
  • Otra es el valor que tiene esa columna en una fila dada. Se le nombra con $1, $2, ... Con estos valores podemos calcular, ejemplo ($4 + $6)/2 es el promedio de las columnas 4 y 6. Este nuevo valor puede ser graficado.

Gnuplot tiene también una columna con la ubicación "0" cuyos valores ($0) son los ordinales de la columna 1°, 2°, 3°, etc.

Podemos utilizar los valores de una columna para rotular los ticks (subdivisiones) de un eje de coordenadas.

Gnuplot-ayuda8.png

Script ayuda8.gp:

set terminal png truecolor size 280, 320 font "Helvetica, 10" background rgb "white"
set margins 9,3,3,4 # <left>, <right>, <bottom>, <top>
set output 'gnuplot-ayuda8.png'
set grid
set yrange [0:]
set xlabel "mes"
set ylabel "Caudal (m³/s)"
set title "Curvas de variación estacional de\ncaudales promedio mensual en m³/s\n{/:Bold Río Tinguiririca} en Los Olmos" offset 0,-0.5
set style data line
set xtics offset -1.7,graph -0.06 rotate by 45
set key autotitle columnhead textcolor variable samplen 1 spacing 1 left top
plot for [n=3:8] 'ayuda3.dat' using (column(n)):xticlabels(1) with linespoints

Datos:

  • ayuda3.dat

Ejecución del script:

Yo@miPC:mi/dir/graficos>gnuplot -c ayuda8.gp
set key
eliminamos maxrows 3 con lo que la leyenda es escrita en una sola columna de 6 filas.
set xtics
ordena "bajar" los rótulos del eje "x" y hacerlos girar 45° para facilitar su lectura.

for [n=3:8]

es la forma más abreviada para graficar las 6 curvas.
with linespoints
ordena trazar líneas con marcas ( +, x, *, ¤, ...) que sirven para distinguir mejor las curvas.

using (column(n)):xticlabels(1)

es el mayor cambio. Ordena utilizar los valores de la columna 1 como rótulos de las subdivisiones del eje horizontal o eje "x".

Multiplots: Colores, espesor, tipos[editar]

gnuplot-ayuda9.png: Algunas combinaciones de colores disponibles con https://github.com/Gnuplotting/gnuplot-palettes .

Es importante presentar los diagramas en una forma agradable y clara al lector. Para ello, uno de los trabajos es elegir bien los colores, lo que no es fácil ni siempre coronado por el éxito. Por eso se recomienda usar lo obrado por otros que se han preocupado especialmente de ese tema.

La página https://github.com/Gnuplotting/gnuplot-palettes ofrece el archivo master.zip que contiene suficientes combinaciones de colores y las definiciones necesarias para ser usadas en tu diagrama.

Ahora veremos como crear en un canvas varios diagramas, en este caso con algunos de las combinaciones de colores que tienes a disposición con master.zip.

Script ayuda9.gp:

set terminal png truecolor size 300, 500
set output 'gnuplot-ayuda9.png'
set loadpath 'gnuplot-palettes-master/'
unset key
unset tics
unset border
set multiplot title "Combinaciones de colores\ndisponibles en Github" layout 4,3
do for [name in "brbg blues orrd greens sand reds greys pastel2 bupu pubu ylorrd chromajs"] {
    load name.".pal"
    set title name
    plot for [n=1:10] 0.02*n linestyle n linewidth 4
}
unset multiplot

Datos:

no necesita datos externos, pero debe acceder a los archivos instalados en "gnuplot-palettes-master/*.pal".
set loadpath
indica al script que existe un directorio adicional donde hay scripts que pueden ser leídos.
unset key, tics, border
las eliminamos para resaltar los colores de marras.
set multiplot
comienzo de la elaboración de varios diagramas que deben ser ordenados en 4 filas y 3 columnas bajo el título "Combinaciones ..."
Nótese que el magen superior fue demasiado estrecho y la segunda línea del título ("disponibles en Github") no pudo aparecer.
do for [name in "brbg ..."] {
comienzo del ciclo que pasa por todos los nombres (sin la extensión '.pal') que queremos exponer. La variable lleva el nombre "name".
load name.".pal"
lea o carge el archivo gp "name.pal" en que name toma los valores brbg, blues, orrd, greens, sand, reds, greys, pastel2, bupu, pubu, ylorrd o chromajs.

plot for [n=1:10] 0.02*n linestyle n linewidth 4

otro ciclo (dentro del primero) de 10 vueltas con la variable n para trazar la curva y=0.02*n (una función constante) cada vez con el linestyle n y el espesor 4.
unset multiplot
cerrar el procesamiento de los 12 diagramas.

Barras, rótulos con valor de la variable y ejes logarítmicos[editar]

Todos los ríos son importantes en su contexto. Sin embargo, es difícil comparar sus caudales porque varían entre varios órdenes de magnitud. El río Lluta tiene un caudal de 2 m³/s y el Río Baker más de 800 m³/s. El resultado es que en un diagrama simple no es posible apreciar los caudales de los ríos más pequeño.

En ese caso se puede agregar a cada barra, que expresa visualmente el caudal de ese río, el valor que representa la barra.

Caudales de ríos de Chile
Script: ayuda10.gp Datos: ayuda10.dat Diagrama creado: gnuplot-ayuda10.png
reset
data='ayuda10.dat'
set terminal png truecolor size 700, 500 font "Helvetica, 10" background rgb '#E0FFFF'
set output "gnuplot-ayuda10.png"
set xlabel "Ríos de Chile, de norte a sur."
set ylabel "Caudal [m/s³]"
set yrange [0:1000]   # 10000 para diagrama logarítmico
set margins 10,3,6,4 # <left>, <right>, <bottom>, <top>
set xtics offset 0  rotate by -45
set style fill solid
set boxwidth 0.5
set grid
unset key
set title "{/:Bold Cuadro comparativo de caudales de ríos de Chile}"
# set logscale y
plot data using (column(2)):xticlabels(1) with boxes fillstyle solid 1.0 fillcolor "#4682B4" ,\
     data using 0:($2+.1):(sprintf("%3.2f",$2)):5 with labels rotate variable offset 0,1.5  notitle
# https://www.cepal.org/samtac/noticias/documentosdetrabajo/8/23338/InCh01100.pdf
# Valores característicos de caudales en las principales cuencas de Chile
# Río              Q(50%) Q(80%) m3/s # Río           rotate angle          
Lluta		   2.03  1.38         Lluta		   90
Lauca		   0.35	 0.44  	      Lauca		   90
Camarones	   0.49	 0.57  	      Camarones	           90
Loa			2.32	 1.37  	      Loa		   90 
Salado		   0.39	 0.53  	      Salado		   90
Copiapó		   1.21	 0.69  	      Copiapó		   90
Huasco		   3.47	 1.37  	      Huasco		   90
Elqui		   7.49	 3.70  	      Elqui		   90
Hurtado		   1.38	 0.41  	      Hurtado		   90
Grande		   7.16	 2.75  	      Grande		   90
Illapel		   2.23	 0.89  	      Illapel		   90
Choapa		   6.28	 2.07  	      Choapa		   90
Alicahue	   1.06	 0.45  	      Alicahue	           90
Aconcagua	  30.60	 19.8  	      Aconcagua	           90
Putaendo	   6.98	 3.51  	      Putaendo	           90
Maipo		 102.00	 70.2  	      Maipo                90	   
Mapocho		   5.58	 3.07  	      Mapocho	           90	   
Tinguiririca	  46.40	 34.3  	      Tinguiririca         90	   
Teno		  50.80	 33.8  	      Teno	           90	   
Maule		 256.00	 186   	      Maule	           90	   
Claro		  64.20	 41.7  	      Claro	           90	   
Itata		  45.00	 31.0  	      Itata	           90	   
Chillán		  14.40	 10.3  	      Chillán		   90
Ñuble		 110.00	 70.0  	      Ñuble		   90
Laja		 175.00	 128   	      Laja		   90
Biobio		 400.00	 330   	      Biobio		   90
Malleco		  28.00	 22.0  	      Malleco		   90
Quepe		  34.00	 25.0  	      Quepe		   90
Cautin		 102.00	 78.0  	      Cautin		   90
Toltén		 270.00	 210   	      Toltén		   90
"San Pedro"	 412.00	 323   	      San_Pedro  	   90
Bueno		 450.00	 350   	      Bueno		   90
Futalefu	 326.00	 263   	      Futalefu   	   90
Palena		 110.00	 76.0  	      Palena		   90
Blanco		 306.00	 249   	      Blanco		   90
Baker		 828.00	 703   	      Baker		   90
Pascua           625.00	 590   	      Pascua           	   90

Diagrama creado por ayuda10.gp


Los nuevos mandatos son:

set style fill solid
Ordena que las barras sean llenadas con un color homogéneo.
set boxwidth 0.5
Da el espesor de las barras.
plot ... with labes
Ordena agregar a cada barra el valor de la variable.


Notas[editar]

  1. Ambos terminales, gnuplot y bash, tienen la desventaja de ser "volátiles" en el sentido de no presentar a la vista todos los comandos que influyen en las respuestas. En el caso de Bash no es importante porque el comando de ejecución del script es siempre el mismo. No así en el caso del script. Para comprender su desarrollo es necesario tener a la vista los comandos que crean y modifican el gráfico. Por eso es apropiado tener el script a la vista.
  2. También existe la pseudo columna 0 que entrega el Número ordinal (matemáticas) de la serie, pero eso lo veremos posteriormente.
  3. Si se utiliza un "_" para separar las letras "X Y", es decir "X_Y", lo que se obtiene es un "XsubíndiceY" o XY.

Bibliografía[editar]

  • Philipp K. Janert, Gnuplot in Action. Understanding data with graphs, Manning Publications Co., Greenwich, Connecticut, USA, 2010

Enlaces externos[editar]