Gnuplot para dummies
Gnuplot. ¿Qué es y por qué?
En esta sección se explicarán los
conceptos elementales de gnuplot.
Introducción a Entre otras cosas aprenderemos a
graficar uno o varias funciones, a
gnuplot usar expresiones matemáticas, a
definir nuestras propias constantes
Primera toma de contacto con el y expresiones, a ajustar los límites
programa y primeros pasos. de graficado y a crear y ejecutar
nuestros propios scripts.
Primeras gráficas
gnuplot> plot x # Sirve para mostrar la función f(x) = x
Ahora que sabemos cómo mostrar funciones veamos algunas funciones matemáticas de interés:
● Suma, resta, multiplicación y división: Usando +, -, * y / respectivamente.
● Resto de la división entera: Usando %.
● Elevado a: Usando **.
● Otras funciones matemáticas de interés: abs(x), sqrt(x), exp(x), log(x), log10(x), sin(x), cos(x), tan(x),
asin(x), acos(x), atan(x), gamma(x), besj0(x), besj1(x), besy0(x), besy1(x), sgn(x), norm(x)...
Para obtener una lista completa de todas las funciones disponibles ir a:
http://gnuplot.sourceforge.net/docs_4.2/node53.html.
Definición de constantes y funciones
gnuplot> plot cos(x), 1-x**2 # Muestra dos funciones
Creación de constantes y funciones:
gnuplot> c = 3e8 # Definimos una constante con la velocidad de la
luz
# Definimos una función que nos da el factor relativista usando la
# constante con la velocidad de la luz
gnuplot> factor_relativista(x) = 1/sqrt(1-(x/c)**2)
gnuplot> plot factor_relativista(x), 1
Límites de graficado
Se pueden establecer los límites de graficado en los ejes x e y usando:
xr
gnuplot> set xrange [0:c] # límites eje x
yr
gnuplot> set yrange [0:7] # límites eje y
Crear y ejecutar scripts
En primer lugar para configurar nuestros scripts es necesario usar un encabezado
en el que pongamos que tipo de archivo queremos generar y el nombre del
archivo a generar:
t
term
set terminal png # Tipo de fichero que queremos generar
o
out
set output “prueba.png” # Nombre del fichero a generar
Crear y ejecutar scripts
Una vez tenemos el script puesto lo guardamos en un directorio con una cierta
extensión (supongamos que lo guardamos como “prueba.plt”). Tenemos dos
opciones para ejecutarlo:
1) Desde gnuplot:
gnuplot> load “prueba.plt”
2) Desde la terminal:
gnuplot prueba.plt
Por enumerar algunos de los temas que
trataremos son:
● Configuración de título, labels,
leyenda
Manejo general ●
●
Diversas formas de mostrar datos
Ajustes de funciones
En esta sección se hablará de ● Formatos a los que exportar las
gráficas
todo el manejo general básico
● Estilos
de gnuplot ● Flechas
Añadir título y labels
Para añadir un título usaremos:
tit
set title “Título de prueba”
Para añadir información sobre los ejes usaremos:
xl
set xlabel “Información eje x” # Información sobre el eje x
yl
set ylabel “Información eje y” # Información sobre el eje y
Palabras a mostrar en la leyenda
Se pueden configurar las palabras que se muestran en la leyenda usando dentro
de plot la opción title (también abreviada por t):
t t
plot cos(x) title “Coseno”, 1-x**2 title “Aproximación”
En caso de no querer que se genere ninguna entrada en la leyenda para una cierta
función se ha de poner t “”.
plot cos(x) t “Coseno”, 1-x**2 t “Aproximación”, 1 t “”
Ajustar la leyenda
Para no mostrar la leyenda usaremos:
unset key
set key off
Para poner la leyenda dentro o fuera de la gráfica se usará:
set key outside
inside
Posicionar la leyenda
La posición de la leyenda se puede fijar esté dentro o fuera usando los
indicadores:
top left (t l) top center (t c) top right (t r)
center left (c l) center (c) center left (c l)
bottom left (b l) bottom center (b c) bottom right (b r)
Ejemplos:
set key top left
set key outside b r
Ajustes extra de la leyenda
Si la leyenda está dentro de la gráfica se le pueden dar las coordenadas de su
posición usando: set key at x, y
Se puede añadir un título a la leyenda poniendo: set key title “Título”
Se puede añadir un recuadro a la leyenda usando: set key box
Se puede poner un fondo opaco para la leyenda con: set key opaque
Para espaciar los elementos de la leyenda usaremos la opción: set key
spacing h (h por defecto vale 1.25)
Si no queremos que se generen elementos de la leyenda automáticamente si no
solo cuando nosotros indiquemos usaremos: set key noautotitle
Mostrar datos de un fichero
Supongamos que tenemos un fichero de texto llamado “data.dat” en el que hay
dos columnas de números, la primera para la x y la segunda para la y. Para
mostrarlo usaremos:
plot “data.dat”
Por defecto los datos se muestran como puntos pero si por ejemplo los
quisiéramos mostrar con líneas podemos añadir al final la opción with lines (w
l) o si lo quisiéramos mostrar con recuadros podríamos usar with boxes:
plot “data.dat” w l
Ficheros de varias columnas
Cuando tenemos un fichero con varias columnas se especifican las dos que
queremos usar de la siguiente forma:
u
plot “fichero.dat” using columna_x:columna_y
Por ejemplo si tenemos un fichero llamado “data2.dat” con tres columnas para x, y,
z y queremos mostrar las funciones y(x) y z(x) usaremos:
plot “data2.dat” u 1:2 w l t “y(x)”, “”¹ u 1:3 w l t “z(x)”
¹ Al no poner nada se entiende que se quiere seguir usando el fichero anterior.
Mostrar datos de un fichero con errores
Supongamos ahora que tenemos cuatro columnas: valor de x, valor de y, error de x
y error de y. Podemos también mostrar los datos con errores usando:
1. Error en x e y: plot “fichero.dat” u 1:2:3:4¹ w xyerror
2. Error en x: plot “fichero.dat” u 1:2:3 w xerror
3. Error en y: plot “fichero.dat” u 1:2:4 w yerror
¹ En este caso no sería necesario especificarlo pues gnuplot usa por defecto estas
cuatro columnas.
Mostrar datos con errores en más de 4 columnas
Supongamos ahora que tenemos un fichero llamada “data4.dat” con las siguientes
6 columnas: valor de x, error de x, valor de y, error de y, valor de z, error de z. Para
mostrar las funciones y(x) y z(x) con errores usaremos:
plot “data4.dat” u 1:3:2:4 w xyerr t “y(x)”,\¹
“” u 1:5:2:6 w xyerr t “z(x)”
¹ En los scripts de gnuplot se puede insertar el caracter ‘\’ al final de una línea para
indicar que la línea y por lo tanto el comando siguen en la siguiente línea.
Sobre el formato de entrada que usa gnuplot
El formato que gnuplot usa para la entrada es el inglés en el cual los decimales se
tienen que poner con un punto. Si nuestro archivo de entrada tiene comas antes
de pasárselo a gnuplot tenemos que modificarlo. Existen las siguientes opciones:
● GNU/Linux, MacOS: Usar el comando: “sed -i 's/\([0-9]\),/\1./g'
file.dat”¹
● Windows: Se pueden abrir uno a uno en un bloc de notas y darle a “Ctrl+R” o
usar programas como Textreme que permiten hacer la operación sobre varios
archivos.
● Windows (PowerShell): “(Get-Content archivoconcomas.txt).Replace(‘,’,
‘.’) | Out-File archivoconpuntos.txt”
¹ Se pueden ejecutar comandos del sistema desde el propio gnuplot usando `...`
Modificar los valores de las columnas
En la columna que queramos modificar pondremos una operación matemática
entre paréntesis indicando las columnas como “$” + número de columna:
plot “file.txt” u ($1*1e-3):2
Ejemplo: Imaginemos un fichero “pendulo.dat” que tiene dos columnas la primera
con el tiempo en segundos y la segunda con la longitud del péndulo en
centímetros y queremos representar el periodo en segundos al cuadrado frente a
la inversa de la longitud en metros para obtener g. En ese caso utilizaremos:
plot “pendulo.dat” u ($1**2):(1/($2/100))
Obtener datos estadísticos
Para obtener datos estadísticos de un fichero se usará el comando “stats”:
stats u 1 # Una columna como variable a usar
u 1:2 # Dos columnas: x e y respectivamente
El comando “stats” nos mostrará y nos guardará muchas variables con los
siguientes nombres: STATS_records, STATS_blocks, STATS_min[_x,
_y], STATS_max, STATS_min, STATS_mean, STATS_mean_err,
STATS_stddev, STATS_stddev_err, STATS_median, STATS_sum,
STATS_sumsq, STATS_correlation, STATS_slope,
STATS_slope_err, STATS_intercept, STATS_intercept_err,
STATS_sumxy
Algunas opciones de stats
Si queremos evitar que stats nos muestre toda la información por pantalla
usaremos la opción “nooutput”:
stats “file.dat” u 1:2 nooutput
Por otro lado en algunos caso si queremos usar “stats” en varios archivos nos
puede interesar que las variables se guarden con otro prefijo que no sea
“STATS_”. Para esto usaremos la opción “name”:
stats “pepe.dat” u 1:2 name “PEPE”
Al usar esto las variables de la diapositiva anterior se convierten en:
PEPE_records, PEPE_blocks, PEPE_correlation...
Ajustes de funciones
Ajustar funciones
Gnuplot nos permite realizar ajustes de funciones tanto lineales como no lineales,
para ello en primer lugar se ha de definir una función como puede ser la función
lineal:
f(x) = m*x + n
Una vez definida esta función se realizará el ajuste de la función con el comando
“fit”:
fit f(x) “file.dat” u 1:2¹ via m, n
¹ Se pueden modificar las columnas igual que en plot
Algunas notas sobre fit
Como ya se ha visto en la sección sobre el comando “stats” se puede obtener el
coeficiente de correlación de un ajuste lineal, la pendiente y la ordenada en el
origen (estos con sus respectivos errores). Sin embargo “fit” aporta algo más que
es la posibilidad de pasar una columna de errores de y para ponderar distinto los
diferentes puntos a la hora de hacer el ajuste:
fit f(x) “file.dat” u 1:2:4 via m, n
No obstante el uso de “stats” sigue siendo muy útil si se quiere obtener el
coeficiente de correlación, cosa que “fit” no da.
Algunos ajustes de fit
Cuando ajustamos una función se guardan los valores de las constantes de ajuste
en las variables que se hayan especificado. En nuestro caso “m” y “n”. También
gnuplot nos guarda por defecto los errores de estas variables en las variables
“m_err” y “n_err” (salvo que se especifique antes del ajuste “set fit
noerrorvariables”).
En ocasiones nos puede interesar que fit no muestre todo lo que suele mostrar y
que solo mostremos la información que realmente vayamos a usar para eso antes
de usar “fit” pondremos:
set fit quiet
Ajustes no lineales
El procedimiento es exactamente el mismo usando fit sobre una función que
definamos y mediante una serie de variables, por ejemplo para un ajuste gaussiano
podríamos usar:
g(x) = A*exp(-(x-m)**2/s)
fit g(x) “gauss.dat” u 1:2 via A, m, s
No obstante cuando se realizan ajustes no lineales es conveniente darle a las
variables unas condiciones iniciales adecuadas (en este caso por ejemplo A =
STATS_max_y, m = STATS_mean_x, s = STATS_stddev_x serían unas
condiciones iniciales razonables)
Estilos de líneas y de puntos
Colores
Existen varias formas de especificar colores:
● Nombres predefinidos: Se puede ver una lista entera ejecutando “show
colornames” pero algunos ejemplos son: “black”, “white”, “dark-red”,
“light-blue”...
● Especificar el color en hexadecimal: Usando el formato “#RRGGBB”¹ donde
cada una de los pares de letras son un número hexadecimal (de 00 a FF) que
significa: 00 → Nada de ese color. FF → Todo ese color. Y el valor final del color
es la suma aditiva de los tres colores.
¹ Se puede usar también el formato “#AARRGGBB” para indicar una transparencia.
Estilos de líneas
Cuando se muestra algo con líneas como por ejemplo: plot x. Se pueden añadir
una serie de propiedades sobre cómo se va a dibujar la línea:
● Color: Se indica poniendo la opción “linecolor” o “lc”. Ejemplo: plot x
lc “dark-red”
● Anchura: Se indica con la opción “linewidth” o “lw”. Ejemplo: plot
cos(x) lw 3
● Trazos de la línea: Se indica con la opción “dashtype” o “dt”. Hay varias
formas de indicar que estilo se quiere.
○ Mediante un número: el número se corresponderá con las opciones que veamos en “test”
○ Mediante una cadena de caracteres que hará de patrón, por ejemplo “- . ”
○ Especificando un patrón mediante parejas de números que especifican tamaño de espacio
pintado y tamaño de espacio son pintar, por ejemplo (8, 6, 2, 6)
Definir un nuevo estilo de línea
En ocasiones nos puede interesar definir un estilo de línea que podamos usar más
adelante para ello usaremos la opción “set style line”:
set style line 101 lc “dark-red” lw 2 dt “- ”
Si se quiere usar el estilo de línea en alguna gráfica se usará mediante la opción
“linestyle” o “ls”:
plot x ls 101
Ajustes de los puntos
También se puede hacer una serie de ajustes sobre los puntos:
● Tipo de punto: Se puede ajustar con la opción “pointtype” o “pt” y el
número que se quiera usar. Se pueden ver los tipos de puntos usando “test”.
Ejemplo: plot “data.dat” pt 7
● Tamaño de punto: Se puede especificar mediante la opción “pointsize” o
“ps” seguido de un número. Este número se trata como un multiplicador del
tamaño del punto. Ejemplo: plot “data.dat” ps 2
● Color de punto: Se hace igual que para las líneas usando la opción “lc”¹.
¹ Vamos a ver, ¿cómo que “linecolor” para los puntos? Pues sí, de hecho lo que
hemos aprendido de “set style line” y “ls” también aplica a los puntos.
Ajustar tics
Ajustar tics mayores
Los tics mayores son los que gnuplot nos muestra con números en los ejes. Se
pueden ajustar de tres formas distintas usando “set xtics” y “set ytics”:
● Frecuencia: Se indica un número que son las unidades a las que se tomará
cada tic, por ejemplo si se quiere mostrar un tic cada 5 unidades se usará: set
xtics 5
● Intervalo y frecuencia: Se indica el tic inicial, la frecuencia y el tic final (tic
inicial y final incluidos). Ejemplo: set ytics 0, 2, 10
● Tics personalizados: Aunque no es la opción más aconsejada se puede
especificar una lista de tics completamente personalizados poniéndolos entre
paréntesis y separados por comas. Además se le pueden dar nombre a los tics
si se especifica un string antes del tic: set xtics (1, 2, 3) o set
ytics (“-Pi” -pi, 0, “Pi” pi)
Algunas opciones de los tics
Añadir tics personalizados: Igual que configurar tics personalizados pero usando
la opción: “set xtics/ytics add (...)”. Más aconsejable porque no altera
las cosas que gnuplot puede hacer automáticamente con los tics.
Rotar los tics: Se hace con la opción “set tics/xtics/ytics rotate
[angulo]”.
Posición de los tics: Se puede elegir si los tics se muestran dentro o fuera de la
gráfica con la opción “set tics in/out”.
Offset: Se añade con la opción “set tics/xtics/ytics offset x, y” que
es por defecto un offset en caracteres con respecto a cuando se muestran los tics.
Si por ejemplo se rotan los tics del eje x interesa poner: “set xtics offset
0.5, 0”.
Tics menores
Son tics sin etiquetas que se muestran entre los tics mayores dividiendo el espacio
entre cada tic en una serie de intervalos. Se especifican con “set mxtics/mytics” si
se especifica un número ese será el número de intervalos en los que se dividirá
cada hueco entre tics mayores. Ejemplo:
set mxtics 5
Grid
Grid
El grid se configura con la opción “set grid” y hay una serie de ajustes que se le
pueden hacer:
● Decidir qué tics mostrar en el grid: Por defecto se muestra el grid para los
xtics y para los ytics. Pero se puede decidir a qué tics afecta poniendo: set
grid xtics/ytics/mxtics/mytics
● Estilo de líneas: Se pueden especificar los estilos de líneas que queramos. Si
especificamos dos estilos de línea distintos se usará el primero para los tics
mayores y el segundo para los tics menores. Ojo: Si se quiere modificar el
dashtype de una línea del grid se ha de hacer creando un nuevo estilo de
línea y usándolo con “ls” dentro del “set grid”.
Estilos de graficado
Estilos de graficado
Veremos aquí los estilos de graficado más importantes y algunas de las cosas que
se pueden configurar en ellos.
● Con líneas: Mediante la opción “with lines” o “w l”. Es el estilo por
defecto de las funciones y se puede especificar el estilo de línea.
● Con puntos: Mediante la opción “with points” o “w p”. Es el estilo por
defecto para los datos de archivo y se puede especificar el estilo de puntos.
● Con puntos y errores: Usando las opciones “w xyerr”, “w yerr” y “w
xerr”.
● Con líneas y errores: Usando las opciones “w xyerrorlines”, “w
yerrorlines” y “w xerrorlines”.
Más estilos de graficado y estilos de relleno
● Solo barras de error: Se hace con las opciones “w xyerrorb”, “w xerrorb”
y “w yerrorb” y permite un mayor control sobre el estilo de línea de las
barras. El tamaño de estas se puede configurar con “set bars ” + tamaño.
Estilo de relleno
En algunos estilos de ploteado nos van a ser necesarios los estilos de relleno.
Estos se especifican con la opción “fs” y pueden ser:
1. Empty: No muestra nada.
2. Solid + densidad: Muestra un solo color aplicando una cierta densidad (0-1).
3. Transparent solid + transparencia: Lo mismo que 2 pero con transparencia.
4. Pattern + número: Se rellenará con el patrón que seleccionemos. Ver “test”.
Estilos de relleno
Por último también dentro del estilo de relleno se puede especificar si queremos
bordes o no con la opción “(no)border”. En caso de especificar que tenga
bordes se puede poner el estilo de líneas de este.
Color de relleno: Se especifica con la opción “fc”.
Ahora veremos algunos estilos de graficado en los que es importante especificar el
estilo de relleno.
Histogramas
Se especifican con las opciones: “w boxes”, “w boxerr” y “w boxxyerr”¹. A la
segunda opción hay que pasarle tres columnas siendo la tercera el error en y. A la
cuarta hay que pasarle cuatro columnas (x, y & sus errores).
Como ya se ha explicado podemos usar “fs” y “fc” para ajustar el estilo en el que
se muestra el relleno del histograma.
¹ Esta opción no es realmente un histograma, es una caja de error alrededor del
punto que le demos.
Curvas llenas
Se especifica con la opción “w filledcurves” y hay una serie de ajustes que se
le pueden hacer:
● Closed: Si se especifica esta opción tratará los puntos como si de un polígono
se tratase y dibujará por lo tanto un área cerrada.
● y=<valor>: Muestra el área que se quede entre los datos que hayamos
graficado y la recta de y constante que especifiquemos.
● Above y=<valor>: Solo dibuja las regiones de la gráfica que queden por
encima de la recta y atrapadas por los datos.
● Below y=<valor>: Lo mismo que antes pero solo dibujando las áreas que
queden por debajo de la recta.
Nuevamente se puede usar “fs” y “fc” para especificar el relleno.
Dibujar el espacio entre dos curvas
Si se especifican tres columnas a la hora de usar la opción “w filledcurves” se
tomarán las dos últimas columnas como dos funciones distintas y se dibujará el
espacio entre ellas.
Haciendo uso de esto si tenemos un fichero de datos con tres columnas (x, y & el
error en y) se puede dibujar el área de error de los datos haciendo uso de:
plot “file.dat” u 1:($2-$3):($2+$3) w filledcurves fs solid
0.25 fc “dark-red” t “Error”
Formatos de salida
Formatos de salida
Existen varios formatos que podemos usar para que gnuplot produzca una salida.
Hay tantos que es imposible abordarlos todos aunque se puede obtener una lista
de ellos si ejecutáis “help set terminal”.
No obstante en estas diapositivas vamos a comentar algunos de los que considero
más importantes y que creo que hay que conocer obligatoriamente si se usa
gnuplot.
Como habréis podido adivinar el tipo de formato se especifica con “set
terminal” y además será necesario configurar un output acorde con el formato
que vayamos a usar mediante la opción “set output”.
El mejor formato para LaTeX: epslatex
Para configurar este formato podemos poner:
set terminal epslatex header “preámbulo”
set output “salida.tex”
Este nos generará dos archivos, uno .tex con código LaTeX y otro .eps con la
imagen. La gran ventaja de este formato es que todo el texto lo procesa LaTeX y
por lo tanto podemos usar todo lo que sabemos de LaTeX para el texto. El único
inconveniente es que hay que manejar dos archivos y que para incluir la gráfica en
vez de usar el típico \includegraphics hay que usar:
\resizebox{.95\linewidth}{!}{\input{salida.tex}}
Un buen formato vectorial: svg
En ocasiones cuando la gráfica que vayamos a usar no se vaya a incluir en un
documento de LaTeX puede ser interesante usar este formato pues al ser vectorial
no hay problemas con su resolución y puede ser bastante útil.
Este formato ya generará un único archivo que además luego se podrá modificar
con herramientas de edición de gráficos vectoriales como Inkscape.
Los formatos cairo: pngcairo, pdfcairo
Estos formatos sirven para generar png y pdf respectivamente. La ventaja que
tienen frente a los formatos png y pdf es que hacen una mejor gestión de las
fuentes lo cual nos permite hacer gráficas más bonitas y nos ahorra dolores de
cabeza.
Algunas cosas curiosas
Algunos ajustes de la terminal
Existen ciertos ajustes que se pueden hacer al especificar el tipo de terminal con
“set terminal”.
● Fuente: Se puede especificar la fuente a usar añadiendo: font “Nombre,
tamaño”. Ejemplo: set terminal qt font “Arial,14”.
● Tamaño: Se puede cambiar con la opción “size ancho, alto”.
Insertar letras griegas
En caso de estar usando epslatex se pueden insertar de la misma forma que se
hace en LaTeX. En caso contrario tendremos que configurar la opción “enhanced”
de la terminal de alguna de estas dos maneras:
● En el momento de configurarla: set terminal … enhanced
● Después de configurarla: set termoption enhanced
Una vez hecho esto se insertarán los símbolos griegos poniendo “{/Symbol
letra}”.
También existe la opción de poner “set encoding utf8” e insertar
directamente los caracteres griegos que queramos.
Sampling
Ningún programa es capaz de calcular infinitos puntos de una función, gnuplot no
es una excepción a esto. Cuando le decimos que muestre una función realmente
solo muestra un conjunto finito de puntos. No obstante el número de puntos que
toma en algunos casos puede ser demasiado pequeño dando lugar a que la
función no se muestre adecuadamente. Para ello se puede configurar el sampleo
que se quiere hacer mediante la opción:
set samples <número>
Donde <número> es el número de puntos que queremos que gnuplot calcule y
muestre.
Dibujar una línea
En ocasiones nos puede interesar dibujar una línea entre dos puntos de la gráfica a
nuestra elección para ello usaremos:
set arrow <identificador> from x1,y1 to x2,y2 nohead¹
También se puede especificar al final el estilo de línea que se quiere usar.
<identificador> es un número que nos servirá para modificar la línea más adelante
o incluso para borrarla haciendo “unset arrow <identificador>”.
¹ Realmente es una flecha sin cabeza, las flechas con cabeza tienen más opciones.
Uso de print
Como ya hemos explicado en algunas ocasiones interesa hacer que tanto “fit”
como “stats” no muestren su salida para mostrar solo lo que queramos. Pero,
¿cómo se muestra esto?
Haciendo uso de “print”. Su uso es muy sencillo simplemente le pasamos separado
por comas todo lo que queremos que muestre, por ejemplo después de un ajuste
nos podría interesar hacer:
print “Pendiente: m = ”, m, “ \\pm ”, m_err
print “Ordenada en el origen: n = ”, n, “ \\pm ”, n_err
print “Correlación: r = ”, STATS_correlation
Algunas configuraciones de print
También se puede redireccionar la salida de print hacia un fichero de texto
haciendo: set print “file.txt”.
También es útil conocer la función “sprintf”, el cual coge un texto con un cierto
formato y unas variables indicadas con “% + tipo variable” y lo convierte a un string:
print sprintf(“Pendiente: m = %f¹ \\pm %f”, m, m_err)
Los tipos de variables más comunes son: %d, %u, %f, %e, %g, %c, %s.
¹ A los valores flotantes si se quiere se le puede indicar el número de decimales
que se quieren tomar poniendo .n antes de f: %.3f
Formato de los tics
En una forma muy parecida a la que hemos explicado para sprintf se puede
especificar el formato en el que queremos que se muestren los tics en los distintos
ejes:
set format x/y “formato”
Además de lo ya explicado para sprintf aquí podemos usar:
%t y %T (mantisa y exponente en base 10), %l y %L (mantisa y exponente en la base
logarítmica usada), %s y %S (mantisa y exponente en potencias científicas), %c
(caracter de unidades en potencias científicas) y %P (valor como múltiplo de pi).
Escala de los ejes
Se puede especificar que gnuplot use una base logarítmica en los ejes haciendo:
set logscale [ejes] [base]
Donde [ejes] puede ser x, y o xy. Si se quiere se puede especificar también la base
logarítmica que se quiere tomar, si no se indica nada se entiende que se quiere
usar base diez.
Se puede quitar la escala logarítmica en cualquier momento con “unset
logscale [ejes]”, si no se especifican los ejes se quitarán en ambos ejes.
GIFs
Creación de GIFs. Ajustar la terminal
Para crear GIFs animados tendremos que indicar:
set terminal gif animate
set output “gifanimado.gif”
Hay una serie de opciones que se pueden tocar, que podemos dividir en:
● Transparencia: Se ajuste añadiendo “transparent” o “notransparent”.
● Ajustes de animado: Son ajustes del animado y por lo tanto tienen que ir justo
después de poner “animate”.
Ajustes de animado
Dentro de los ajustes de animado se puede especificar:
● Tiempo entre fotogramas en milisegundos: Se especifica con la opción
“delay t” donde t es el tiempo entre fotogramas en milisegundos¹.
● Repeticiones: Número de veces que se repite el GIF que se especifica
mediante “loop n” donde n es el número de repeticiones. Por defecto se
supone “loop 0” que significan infinitas repeticiones.
● Optimización: Se configura poniendo “optimize” o “nooptimize”. En caso
de querer optimizar es importante desactivar las transparencias y usar una
paleta de colores predefinida que no cambie conforme el bucle avanza.
¹ En ningún caso deberemos bajar este tiempo de 2 milisegundos puesto que por
debajo de este tiempo empieza a funcionar mal.
GIF con un fotograma por línea
Supongamos que tenemos un fichero en el que cada línea se corresponde con una
configuración de los principales cuerpos del Sistema Solar y queremos animar eso.
Lo más importante será en primer lugar usar “stats” para obtener todas las líneas
del archivo. Después de esto las recorreremos usando un bucle:
do for [i = 0 : STATS_records - 1] {
# Graficamos cada línea aquí
A la hora de graficar lo haremos de la manera habitual salvo porque después de
poner el nombre del fichero y las columnas añadiremos “every ::i::i”.
GIF con un fotograma por bloque
Gnuplot define como bloques dentro de un fichero de datos a los bloques de datos
que estén separados por, al menos, 2 líneas en blanco. Si tenemos un fichero en el
que queremos graficar cada bloque de datos en un fotograma haremos algo
parecido a lo ya explicado pero adaptado.
El bucle en este caso irá de 0 a STATS_blocks - 2.
Dentro del archivo una vez que indicamos el fichero de datos se pondrá la opción
“index i” para indicar que solo queremos graficar ese bloque de datos. Lo que
antes se ponía con “every” ya no es necesario por lo tanto.
FIN
Gracias por asistir