Gráficas con gnuplot

Vamos a describir una serie de comandos básicos para el uso de gnuplot. Un programa para generar gráficas 2D y 3D a partir de datos "crudos" y funciones matemáticas.

Los usos y aplicaciones de esta herramienta son infinitas y lo más interesante, bastante simple de usar mediante comandos.

Instalación

La instalación no tiene ningún misterio y creo que está empaquetado para todas las distribuciones que generalmente usamos.

No obstante en su página web se encuentra toda la información necesaria para la instalación y algunas gráficas de muestra de lo que se puede realizar con este sistema.

Gráficas a partir de datos

Creo que lo mejor es echarle un vistazo a un ejemplo e ir comentando los detalles. En el siguiente ejemplo sacamos una gráfica con el consumo de energía medio de un nodo a partir de una simulación del ns2.

set terminal postscript eps color
set grid
set xlabel "Node ID"
set xrange [0:50.0]
set ylabel "Energy(Joules)"
set yrange [0:20.0]
set title "Average energy consumed by Node"
plot "average-consume-bynode.data" with boxes

Todos los comandos tienen opciones varias para variar la presentación, tipo de gráfica, límites de la gráfica, etc. Sería imposible verlas todas por lo que os remito al manual Smiling.

Volvamos con el ejemplo, la primera línea indica cómo queremos que nos saque la gráfica, le decimos que la saque por terminal, en postcript, eps y a todo color.

Con "set grid" le indicamos que nos muestre la regilla en la gráfica.

A continuación vamos con el eje de las X (es una gráfica 2D), primero indicamos con xlabel, la etiqueta que le queremos poner, y a continuación el rango. finalmente establecemos lo mismo con el eje de las Y.

Para terminar de modelar nuestra gráfica le ponemos el titulo con "set title".

Vale, lo último es indicarle dónde estan los datos a representar y cómo queremos que nos lo pinte, en este caso le decimos (última linea del ejemplo) que nos pinte los datos en average-consume-bynode.data con cajas (boxes).

El archivo de los datos tiene esta pinta:

0 17.9791017
1 17.3219788
2 16.9751424
3 16.0370256
4 17.2629318
5 16.2645002
6 16.5181991
7 17.3706168
8 18.2454446
9 17.2866098
10 15.8625805
11 16.2917952
12 16.2480647
.. ........

La primera columna son las X y la segunda las Y.

Bueno, pues vamos a pintar, podemos teclear los comandos anteriores aunque os recomiendo que los metais en un archivo (en nuestro caso en el archivo average-consume-bynode.dem), con lo cual si ejecutamos:

$ gnuplot average-consume-bynode.dem > grafica.ps

En gráfica.ps tendremos nuestra gráfica:

$ gv grafica.ps

con solo cambiar el estilo (palabra a la derecha del with en la última linea) podeis tener diferentes tipos de gráficas para adaptarla a aquellas que mejor representen vuestros datos.

Concretamente se pueden usar:

`lines`, `points`, `linespoints`, `impulses`,
 `dots`, `steps`, `fsteps`, `histeps`, `errorbars`, `xerrorbars`,
 `yerrorbars`, `xyerrorbars`, `errorlines`, `xerrorlines`, `yerrorlines`,
 `xyerrorlines`, `boxes`, `filledcurves`, `boxerrorbars`,
 `boxxyerrorbars`, `financebars`, `candlesticks`, `vectors` or `pm3d`

Gráficas de funciones

Otra posible aplicación es obtener datos de funciones matemáticas. Vamos a ver un ejemplo extraido de la demo gallery, dónde hay un montón de ejemplos que os pueden servir como referencia de lo que se puede hacer.

Ahora lo vamos ha realizar desde la línea de comandos ejecutando gnuplot estableciendo la rejilla y utilizando la función splot (usada para funciones 3D y superficies). Esta genera una gráfica con las funciones que le especifiques. Si quieres representar mas de una función no te olvides de separarlas por comas.

Aqui esta el ejemplo tal y como se ejecuta:

felix$ gnuplot
 
        G N U P L O T
        Version 4.0 patchlevel 0
        last modified Thu Apr 15 14:44:22 CEST 2004
        System: Linux 2.6.14-2-386
 
        Copyright (C) 1986 - 1993, 1998, 2004
        Thomas Williams, Colin Kelley and many others
 
        This is gnuplot version 4.0.  Please refer to the documentation
        for command syntax changes.  The old syntax will be accepted
        throughout the 4.0 series, but all save files use the new syntax.
 
        Type `help` to access the on-line reference manual.
        The gnuplot FAQ is available from
                <a href="http://www.gnuplot.info/faq/
 
" title="http://www.gnuplot.info/faq/
 
">http://www.gnuplot.info/faq/
 
</a>        Send comments and requests for help to
                <gnuplot-info@lists.sourceforge.net>
        Send bugs, suggestions and mods to
                <gnuplot-bugs@lists.sourceforge.net>
 
 
Terminal type set to 'x11'
gnuplot> set grid
gnuplot> splot x**2+y**2, x**2-y**2
gnuplot>

Y ya tienes tu primera gráfica en 3D.

La ayuda

Las combinaciones son infinitas para lo cual gnuplot nos da una ayuda por comandos bastante extensa.

generalmente con un help te muestra una ayuda en secciones para que veas las distintas posibilidades.

Como ya he dicho arriba, en mi opinión la mejor fuente de ayuda son los ejemplos, simplemente busca el tipo de gráfico que quieres y fijate en como lo han diseñado.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de nacho

PlotDrop

Buscando buscando, he encontrado el paquetito PlotDrop. Es un frontend para gnuplot que te permite manejarlo de forma más cómoda.

-------------
Nacho

Nacho