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
Ver instrucciones en la página central de Gnuplot: http://www.gnuplot.info/
Modos de operación
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
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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Gnuplot-ayuda5.png/400px-Gnuplot-ayuda5.png)
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:
- una función matemática,
- un archivo de texto (columnas) con los datos, separado del script que contiene las órdenes,
- un archivo binario para imágenes que se incluyen en el diagrama a producir,
- un embudo ("pipe" o "|") que envía un flujo de datos desde otro programa o
- 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
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
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
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
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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Cm.png/400px-Cm.png)
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
![](http://upload.wikimedia.org/wikipedia/commons/thumb/c/ca/Gnuplot-Ayuda2.png/400px-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:
- la columna 2 en el eje de las abscisas (horizontal).
- la columna 3 en el eje de las ordenadas (vertical).
- una pequeña cruz "+" en el lugar (x,y).
- una leyenda con el nombre del archivo de datos y las columnas usadas en la esquina superior derecha.
- subdivide los ejes con "ticks" (subdivisiones) y sus respectivos valores dentro del eje.
- 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".
- 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
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.
![](http://upload.wikimedia.org/wikipedia/commons/7/7f/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
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. .
![](http://upload.wikimedia.org/wikipedia/commons/3/3f/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
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) |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/5/57/Gnuplot-ayuda6.png/400px-Gnuplot-ayuda6.png)
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
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.
![](http://upload.wikimedia.org/wikipedia/commons/8/8c/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
![](http://upload.wikimedia.org/wikipedia/commons/b/b5/Gnuplot-ayuda9.png)
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.
- baja el archivo https://github.com/Gnuplotting/gnuplot-palettes/archive/master.zip
- expándelo (unzip) en un subdirectorio del directorio donde guardas tus scripts gp, por ejemplo en el subdirectorio "gnuplot-palettes-master"
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
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.
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
|
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
- ↑ 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.
- ↑ También existe la pseudo columna 0 que entrega el Número ordinal (matemáticas) de la serie, pero eso lo veremos posteriormente.
- ↑ 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
- Philipp K. Janert, Gnuplot in Action. Understanding data with graphs, Manning Publications Co., Greenwich, Connecticut, USA, 2010
Enlaces externos
- Gnuplot Homepage http://www.gnuplot.info/