Ayuda OnLine de GULiC
Tema 21: GNUplot
Subiendolo, Cluster.
Arreglado formato, amd77.
GNUplot
Gnuplot es el programa encargado de hacer las gráficas 2D y 3D que se visualizaban en Octave. Gnuplot es un programa independiente de Octave, que usado por sí mismo te permite hacer representaciones de funciones continuas y de tablas de datos. Octave sólo usa un subconjunto de las funcionalidades de Gnuplot.
La primera característica de Gnuplot es que es muy similar a Octave en funcionamiento, es decir, que posee una interfaz de comandos muy poderosa que también puedes utilizar escribiendo scripts. Esta forma de trabajar tiene sus desventajas y sus ventajas. Las desventajas es que necesitas una curva de aprendizaje más lenta, donde tienes que haberte mirado por lo menos la descripción de uno de los comandos (plot) para poder empezar a hacer algo. Cuando estás tanteando datos mejor que uses otro programa que te permita hacer las cosas más interactivamente. Pero cuando ya tienes claro lo que tienes que hacer, por ejemplo, sobre una tabla de datos, y tienes 100 tablas de datos a las que hacer lo mismo, poder hacer un script puede ser de una gran ayuda.
La otra característica destacable de Gnuplot es la variedad de formatos de salida de que dispone, que se pueden seleccionar en el script. Te permite exportar a formatos vectoriales (xfig, TEX, postscript), formatos bitmap (png, pbm), o formatos de impresora (epson, hp, etc). Con esto puedes tener tu gráfica retocada por xfig en tu publicación en LaTeX, o bien puesta en tu página web (png) y o bien impresa directamente en una impresora.
Al ejecutar gnuplot en un shell entramos a su línea de comandos:
$ 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.8-1-686
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
http://www.gnuplot.info/faq/
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>
Como fuente de ayuda teclea help desde dentro del programa y después de una pantalla introductoria te saldrá un prompt sobre el que podrás escribir, o bien un nombre que elegirás de los topics que se te presentan, o bien un nombre de comando si quieres conocer su sintaxis.
Como has visto, el formato de salida es x11 (visualizar en las X). Para ver un listado de los diferentes tipos de salida disponibles usa set terminal.
Representación de expresiones analíticas
La parte más sencilla y práctica de Gnuplot es la presentación de funciones continuas, tanto en forma explícita y=f(x) o z=f(x,y), como puede ser en forma paramétrica: curvas 2D (x,y)=f(t), curvas 3D (x,y,z)=f(u), superficies 3D (x,y,z)=f(u,v).
Con help functions tenemos un listado de las funciones que admite. Una gran desventaja que tiene es que muestrea las funciones a intervalos regulares, por tanto, no hace ningún análisis de discontinuidades (lo que se nota en, por ejemplo, la función floor), aunque sí se puede configurar para que reduzca el intervalo. Si queremos imponer cual será el rango del eje X o el Y lo ponemos entre corchetes antes de la función. Algunos ejemplos:
gnuplot> plot x # identidad
gnuplot> plot abs(x) # valor absoluto
gnuplot> plot x**2 # parábola
gnuplot> plot [-1:1] sqrt(1-x**2) # semicircunferencia
gnuplot> plot [] [-0.1:1.1] exp(-x**2) # gaussiana
gnuplot> plot [-1:4] gamma(x) # función gamma
gnuplot> plot floor(x) # función redondeo hacia abajo
gnuplot> plot x-floor(x) # diente de sierra
gnuplot> splot x**2+y**2 # plot en 3D
gnuplot> splot sqrt(1-x**2+y**2)
gnuplot> set isosamples 20,20 # cambia la resolución
gnuplot> replot
gnuplot> set isosamples 50,50 # cambia la resolución
gnuplot> set contour # activa líneas de nivel
gnuplot> replot
gnuplot> set parametric # modo paramétrico
dummy variable is t for curves, u/v for surfaces
gnuplot> set samples 500 # mejor resolución (+lento)
gnuplot> plot sin(7*t),cos(5*t) # lissajous en 2D
gnuplot> splot sin(5*u),sin(6*u),sin(7*u) # lissajous en 3D
gnuplot> set samples 100 # menor resolución (+rápido)
gnuplot> splot cos(u)*cos(v),cos(u)*sin(v),sin(u) # esfera en 3D
Representación de archivos de datos
Gnuplot también tiene un modo para trabajar con archivos de datos con múltiples columnas. Cuando los archivos de datos tienen 1 ó 2 columnas se presentan directamente. Si un archivo tiene más de 2 columnas se pueden presentar columnas arbitrariamente, hacer operaciones matemáticas sencillas entre columnas. Veamos esto en un ejemplo real (bastante prolijo) donde un servidor genera una línea de log de load, logins y carga de cpu, a cada hora y queremos obtener gráficas que muestren la evolución en el tiempo
Ejemplo para la monitorización de carga de un servidor en el tiempo
set title "Convex November 1-7 1989 Circadian"
set key left box
set xrange[-1:24]
plot 'gnuplot.dat' using 2:4 title "Logged in" with impulses,\
'gnuplot.dat' using 2:4 title "Logged in" with points
pause -1 "Hit return to continue"
set xrange [1:8]
set xdtic
set title "Convex November 1-7 1989"
set key below
set label "(Weekend)" at 5,25 center
plot 'gnuplot.dat' using 3:4 title "Logged in" with impulses,\
'gnuplot.dat' using 3:5 t "Load average" with points,\
'gnuplot.dat' using 3:6 t "%CPU used" with lines
set nolabel
pause -1 "Hit return to continue"
reset
Como último ejemplo, vamos a probar un script donde se hacen ajustes por el método de mínimos cuadrados con Gnuplot. En el ejemplo se realizan ajustes a una recta variando los pesos, pero el método de ajuste que utiliza Gnuplot permite poner cualquier función de ajuste, simplemente definiendo las variables y constantes y dando unos valores iniciales a las constantes.
Ajustes por mínimos cuadrados en Gnuplot
y(x) = a*x + b # función a la que se ajustará
a = 0.0 # valores iniciales
b = 0.0 # de los parámetros
fit y(x) 'gnuplot-fit.dat' via a, b
set title 'Ajuste sin pesar'
plot 'gnuplot-fit.dat', y(x)
pause -1 "Pulsa enter para continuar"
fit y(x) 'gnuplot-fit.dat' using 1:2:3 via a, b
set title 'Ajuste con mayor peso en bajas temperaturas'
plot 'gnuplot-fit.dat', y(x)
pause -1 "Pulsa enter para continuar"
fit y(x) 'gnuplot-fit.dat' using 1:2:4 via a, b
set title 'Ajuste con mayor peso a altas temperaturas'
plot 'gnuplot-fit.dat', y(x)
pause -1 "Pulsa enter para continuar"
fit y(x) 'gnuplot-fit.dat' using 1:2:5 via a, b
set title 'Ajuste con peso correspondiente a error experimental'
plot 'gnuplot-fit.dat' using 1:2:5 with errorbars, y(x)
pause -1 "Pulsa enter para continuar"
- Añadir nuevo comentario
- 3286 lecturas



