next_inactive up previous


Gnuplot básico

Santiago Romero <sromero arroba gmail punto com>

14-09-2005


Contents

1 Qué es gnuplot

GNUPlot es una herramienta GNU que nos permitirá dibujar fácilmente gráficas con datos numéricos obtenidos en programas externos.

Si ejecutamos ``gnuplot'' desde la línea de comandos de Linux, entraremos en el prompt de gnuplot, listo para recibir nuestras órdenes. Si ejecutamos ``quit'' o ``exit'', saldremos del programa. Con ``load fichero.plt'' dentro de gnuplot o con ``gnuplot fichero.plt'' desde fuera, podemos cargar un fichero de órdenes para gnuplot como si las estuviéramos tecleando (el fichero contendrá líneas con el mismo formato que las que se teclean dentro del command line de gnuplot).

Dentro de gnuplot tenemos ejecutar todo tipo de comandos para dibujar gráficas, como por ejemplo:

gnuplot> plot sin(x)

gnuplot> plot [0:5] sin(x)

gnuplot> a=0.5

gnuplot> print a

gnuplot> plot a*sin(x)*cos(x)

Este pequeño tutorial está pensado para mostrar de qué manera se pueden dibujar gráficos ya tabulados en ficheros de texto, obtenidos mediante algún tipo de procesamiento externo, de modo que no veremos todas las posibilidades del prompt de gnuplot.

2 Pintando datos tabulados

Supongamos que mediante una aplicación obtenemos unos resultados numéricos tabulados en un fichero de texto, del estilo:

0.10 1.12 23.45 11.11

0.20 2.12 12.34 22.22

0.30 2.34 98.23 10.40

...

1.10 8.32 22.45 12.00

Es decir, un fichero de texto llamado ``datos.txt'' con (en este caso) 4 columnas numéricas.

Podemos obtener una gráfica en pantalla mediante gnuplot utilizando el siguiente comando:

gnuplot> plot ``datos.txt'' using 1:2 with lines
Es decir: ``píntame una gráfica usando las columnas 1 y 2 del fichero datos.txt, rellenando los espacios entre los puntos de la gráfica con líneas rectas''.

El parámetro ``with lines'' a la hora de dibujar la gráfica indica el tipo de ``rellenado entre puntos'' a utilizar (continuo, discontinuo, etc). El formato genérico de uso es ``with lines'' o ``with lines <NUMERO>''. Este número varía según el terminal que tengamos seleccionado con el comando ``set term''. La mejor manera de ver los tipos de ``rellenados'' disponibles sería ejecutar:

gnuplot> set term x11

gnuplot> test

Podemos dibujar más de una gráfica en la misma ventana:

gnuplot> plot ``datos.txt'' using 1:2 with lines, \

> ''datos.txt'' using 1:3 with lines, \

> ``datos.txt'' using 2:4 with lines

Si necesitamos añadir títulos, podemos hacerlo:

gnuplot> plot ``datos.txt'' using 1:2 title ``A'' with lines, \

> ''datos.txt'' using 1:3 title ``B'' with lines, \

> ``datos.txt'' using 2:4 title ``C'' with lines

También podemos superponer funciones teóricas:

gnuplot> f(x) = 12.3*x + 1.31

gnuplot> plot ``datos.txt'' using 1:2 title ``A'' with lines, \

> ''datos.txt'' using 1:3 title ``B'' with lines, \

> ``datos.txt'' using 2:4 title ``C'' with lines, \

> f(x) with lines

Si necesitamos dibujar exáctamente un rango concreto de la gráfica, podemos hacerlo:

gnuplot> set xrange [0:2]

gnuplot> set yrange [0:10]

gnuplot> replot

La escala no tiene por qué ser lineal, puede ser logarítmica:

gnuplot> set xrange [0.01:20]

gnuplot> set yrange [0:2]

gnuplot> set logscale x

gnuplot> replot

También podemos cambiar las graduaciones e incrementos marcados en los ejes:

gnuplot> set xtics 1

gnuplot> set mxtics 5

gnuplot> set ytics 0.5

gnuplot> set mytics 5

gnuplot> set grid   (Nota: si queremos poner rejilla)

gnuplot> replot

También podemos poner etiquetas en los ejes, y título:

gnuplot> set xlabel ``Clientes''

gnuplot> set ylabel ``Tiempo de respuesta (ms)''

gnuplot> set title ``Mi grafica''

gnuplot> replot

3 Obteniendo una versión impresa de la gráfica

Aparte del hecho de que podemos capturar la gráfica resultante en pantalla con ksnapshot, gimp o similares, podemos obtener una versión postscript (.ps) de la gráfica mediante:

gnuplot> set term postcript

gnuplot> set output ``salida.ps''

gnuplot> replot

gnuplot> save ``salida.plt''

gnuplot> quit

También podemos imprimir directamente las gráficas en formato PNG:

gnuplot> set terminal png

gnuplot> set output ``salida.png''

4 Detalles a tener en cuenta

4.1 Cargar ficheros plt desde línea de comandos

Sea un fichero ``datos.plt'' con un fichero como el siguiente:

set xlabel ``Bla''

# Esto es un comentario y gnuplot lo ignora.

set ylabel ``Bla Bla''

plot ``fichero.dat'' with (etc. etc. etc.)

Podemos ejecutarlo de 2 formas diferentes, desde la línea de comandos de Linux o desde dentro de gnuplot:

bash$ gnuplot -persist datos.plt
o bien

gnuplot> load ``datos.plt''
La opción -persist (al igual que poner un pause -1 dentro del .plt) sirve para que la gráfica se quede en pantalla hasta que pulsemos una tecla.

4.2 Estilos de ploteado

Como ya hemos visto, hay diferentes estilos de ``ploteado''. Veamos algunos ejemplos:

gnuplot> plot (...) with lines

gnuplot> plot (...) with lines -1

gnuplot> plot (...) with dots

gnuplot> plot (...) with impulses

gnuplot> plot (...) with steps

gnuplot> plot (...) with histeps

gnuplot> plot (...) with boxes

gnuplot> plot (...) smooth csplines

gnuplot> plot (...) smooth bezier

4.3 Otros

gnuplot> set xzeroaxis

gnuplot> set yzeroaxis lt -1

La opción ``lt'' permite indicar el ``line type'', pero también hay ``ls'' (line style) o ``lw`` (line width).

gnuplot> set clip one

gnuplot> plot sin8x) with linespoints

gnuplot> set noclip one

gnuplot> replot

gnuplot> set clip two

gnuplot> replot

gnuplot> set noclip two

gnuplot> replot

gnuplot> set xtics nomirror

gnuplot> set ytics nomirror

gnuplot> set size square

gnuplot> set size ratio 0.5

gnuplot> set grid xtics ytics mxtics mytics

About this document ...

Gnuplot básico

This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -no_subdir -split 0 -show_section_numbers /tmp/lyx_tmpdir57282xa5Qp/lyx_tmpbuf0/gnuplot.tex

The translation was initiated by Santiago Romero on 2005-09-14


next_inactive up previous
Santiago Romero 2005-09-14