viernes, 15 de julio de 2011

Minitutorial de uso de GNUPlot

GNUPlot puede trabajar tanto de forma interactiva como no interactiva, por lo que se puede invocar desde un shell script.

Un ejemplo sencillo.

Supongamos que tenemos tres ficheros, con dos columnas cada uno de datos numéricos separados por espacios en blanco (espacios, tabuladores, ...). Estos ficheros se pueden dibujar utilizando GNUPlot de forma tanto interactiva como no interactiva.

De manera interactiva

Abrimos GNUPlot en un terminal, escribiendo gnuplot y nos mostrará el modo interactivo. En el podemos representar los ficheros de forma rápida utilizando la orden plot.
plot ’fichero1.txt’ u 1:2, ’fichero2.txt’ u 1:2, ’fichero3.txt’ u 1:2

De manera no interactiva

En la terminal escribimos la siguiente orden para pintar los ficheros:
echo \
"plot ’fichero1.txt’ u 3:4, ’fichero2.txt’ u 3:4, ’fichero3.txt’ u 3:4" |
gnuplot -persist
La u es la abreviatura de la palabra reservada using y los números a continuación son el rango de columnas en el fichero que se van a representar.

Parámetros más comunes.

  • set xrange[a:b]: especifica el rango de la variable x.
  • set yrange[a:b]: especifica el rango de la variable y.
  • set xlabel 'etiqueta': especifica la etiqueta del eje x.
  • set ylabel 'etiqueta': especifica la etiqueta del eje y.
  • set encoding iso_8859_1: especifica el tipo de codificación. Resulta útil cuando es necesario rotular utilizando acentos.
  • set title 'etiqueta': especifica el título del gráfico.
  • set logscale x : fija el eje x con escala logarítmica.
  • set logscale y : fija el eje y con escala logarítmica.
  • set xtics ("1" 1, "Dos" 2): especifíca que puntos del eje x deben aparecer en la gráfica y qué etiqueta deben llevar.
  • set ytics ("1" 1, "Dos" 2): especifíca que puntos del eje y deben aparecer en la gráfica y qué etiqueta deben llevar.
  • set key [punto/posición]: especifica el lugar dónde situar la leyenda. Puede ponerse el punto absoluto o utilizar una posición relativa de entre {left | right | center} {top | bottom | center}.

Utilizar una escala logarítmica.

set autoscale
set title 'Tasa de error en función del nº de estados.'
set xlabel "Estados"
set ylabel "%Error"
set logscale x
set logscale y
set xrange [0.9:280]
set yrange [0.9:104]
set xtics ("1" 1, "2" 2, "4" 4, "8" 8, "16" 16, "32" 32, "64" 64, "128" 128, "256" 256)
set ytics ("1" 1, "2" 2, "3" 3, "4" 4, "5" 5, "10" 10, "20" 20, "30" 30, "40" 40, "50" 50, "100" 100)
plot "salida_codeword4" using 1:2 title  'Codewords = 4' with linespoints, \
     "salida_codeword16" using 1:2 title '           16' with linespoints, \
     "salida_codeword64" using 1:2 title '           64' with linespoints, \
     "salida_codeword256" using 1:2 title '          256' with linespoints
Generando la siguiente gráfica:

Utilizar LaTeX para pintar la gráfica.

GNUPlot puede generar un fichero con la información de la gráfica para LaTeX. Este fichero es importado en un documento de LaTeX que es quién realiza el dibujado. Para que genera un fichero en LaTeX hay que utilizar la orden:
set output "fichero_latex.tex"
Un ejemplo de uso, en el que se pinta la función seno escrita en notación polaca inversa.
set terminal latex
set output "gnueg.tex"
set title "This is a plot of $y=\sin(x)$"
set xlabel "This is the $x$ axis"
set ylabel "\\rotatebox{90}{This is the $y$ axis}"
plot [0:2*pi] [-1.2:1.2] sin(x) title "Sinus"
set output "egpltl.tex"
replot
Para importarla en LaTeX, se podría hacer de la siguiente manera:
\begin{figure}[ht]
 \centering
 \scalebox{0.8}{\input{egpltl.tex}}
 \caption{Funció generada per {\sf GNUPLOT}.}\label{egplt1}
\end{figure}

2 comentarios:

  1. como se ponen acentos en la terminal epslatex??

    ResponderEliminar
  2. Puedes escapar los acentos con la barrra invertida y el caracter '.
    Por ejemplo: Presentaci\'on

    ResponderEliminar

Escriba su comentario (no necesita registrarse).