jueves, 23 de agosto de 2012

Laboratorio ejercicio 1: Tutorial gnuplot

Gnuplot es un programa en línea de comandos que permite dibujar gráficas de funciones en 2 y 3 dimensiones a través de las fórmulas que las definen. También puede dibujar gráficos usando una tabla de coordenadas (en formato sólo texto) creadas con cualquier programa.

El software tiene copyright pero se distribuye libremente y está disponible para UNIX, Linux, IBM OS/2, MS Windows, MSDOS, Macintosh, VMS, Atari y muchas otras plataformas.

Originalmente estaba destinado a científicos y estudiantes para permitirles visualizar gráficamente funciones matemáticas o tablas de datos. Hace su trabajo muy bien y es utilizado por otras herramientas, entre las que se encuentran Maxima y Octave, para dibujar gráficas evitandoles tener que desarrollar su propio motor de dibujo (un ejemplo paradigmático de software libre y cooperativo).

Gnuplot viene desarrollándose desde 1986 y la última versión, es la 4.4.4 y está fechada el 3 de marzo de 2007.

Además de dibujar la gráfica en pantalla puede guardarla en multitud de formatos entre los que se encuentran los usuales, como jpg, png, pdf, svg; y otros, menos usuales, pero muy interesantes para los usuarios LaTeX como metafont, eps, pstricks, picture.


Instalación


Como ya se sabe la sencillez para instalar en ubuntu (linux). Para instalar, ejecutamos el siguiente comando:

$ sudo apt-get install gnuplot

Ejecución


Sólo ejecuta gnuplot, verás que te despliega un mensaje (versión, créditos, un poco de ayuda) en pantalla:

$ gnuplot

Ayuda en línea

Una vez entremos en modo interactivo, gnuplot dispone de un completísimo manual interactivo que se accede mediante el comando help al que bastará con dar cualquier nombre de comando para que nos explique su funcionamiento y opciones. Para salir del modo interactivo tenemos dos comandos equivalentesexit y quit.

En general, cualquier expresión matemática aceptada por los lenguajes de programación más comunes como C, FORTRAN, PASCAL o BASIC es válida. Los espacios en blanco son ignorados y la precedencia de los operadores es como en C o FORTRAN. Acepta números complejos que deben escribirse en la forma {3,2} = 3 + 2i, en esta forma {0,1} representa al propio i. Las funciones de gnuplot son las mismas de la librería matemática UNIX (las mismas que utiliza el FORTRAN).


Los comandos primarios del programa son plot y splot. Ellos dibujan funciones y datos de muchísimas formas posibles. plot se utiliza para gráficos en 2-d (variables x, y) y splot se utiliza para gráficos en 3-d (variables x, y, z). Una explicación detallada de estos comandos puede obtenerse mediante:
gnuplot> help plot

gnuplot> help splot

La sintaxis general para representar graficas 2-d de funciones de una variable es:
plot {rangos} {<funcion> | {"<fichero-de-datos>" {using ...}}}
{titulo} {estilo} {, <funcion> {titulo} {estilo}...}

donde se pone el nombre de la < función> que queremos representar o el nombre del < fichero-de-datos> , entre comillas (simples o dobles), con los datos num ́ricos de las e coordenadas a representar.


Grafica funciones simples

¿Qué tal graficar funciones trigonométricas básicas? Puedes poner todas en una sola figura únicamente separándolas con comas. Los rangos pueden especificarse entre corchetes cuadrados. La letra “x” será tomada como variable de referencia para gnuplot. Al ejecutar el comando te aparecerá una ventana con la gráfica de cada función; desde la que podrás, entre otras cosas, salvar la gráfica en el portapapeles.

gnuplot> plot [-10:10] sin(x), atan(x), cos(atan(x))



Así puedes ver la lista de funciones soportadas:

gnuplot> help functions


Cambia las opciones por defecto

Por defecto, cada función aparece diferenciada por un color, todas con el mismo tipo y grosor de línea, con una leyenda y enmarcadas por los ejes X y Y. Por supuesto, cada una de estas opciones puede modificarse. Veamos como modificar todas a partir del ejemplo anterior y sólo para la función sin(x).

Establecemos el título de la gráfica con title.

gnuplot> set title "Funciones trigonométricas"


Un comando importante es set ya que con él pueden modificarse los gráficos de plot y splot. Los comandos set crean y configura el ambiente de trabajo sobre el cual trabajara la aplicación. El comando set controla casi todos los parámetros de la curva. Tiene multitud de variantes que pueden verse con help set Se incluye entre estos controles la opción de modificar los ejes. Así:


gnuplot>set xrange [xmin:xmax]
gnuplot>set yrange [xmin:xmax]


para ver mas sobre el comando set pueden teclear:

gnuplot>set help

Establecemos los nombres de los ejes X y Y con xlabel y ylabel.

gnuplot> set xlabel "x [grados]"

gnuplot> set ylabel "y(x)"


Establecemos leyenda (title), línea punteada (linespoints), color (linetype), y grosor (linewidth) a sin(x).

gnuplot> plot [-pi:pi] sin(x) title "sen(x)" with linespoints linetype 4 linewidth 3, atan(x), cos(atan(x))




Cada opción tiene versión corta. Con esto, el comando anterior queda así:

gnuplot> plot [-pi:pi] sin(x) t "sen(x)" w lp lt 4 lw 3, atan(x), cos(atan(x))

Notemos que la función sin(x) aparece con color violeta, mayor grosor y con puntos en la línea.
Hay muchas opciones para el estilo al dibujar los datos

Table 1: Opciones para los estilos del dibujo de los datos. Algunas opciones requieren listas de datos de 2 o más columnas
linespointslinespointsdots
impulsesyerrorbarsxyerrorbarssteps
fstepshistepsboxesboxerrorbars
boxxyerrorbarsvectorfinancebarscandlesticks
error linesxerrorlinesyerrorlinesxyerrorlines


Grafica datos

Gnuplot trabaja de manera natural con los datos. Supongamos que tienes un archivo “experimento.dat” con un montón de datos dispuestos en dos columnas. Graficar esos datos es tan sencillo como esto:

gnuplot> plot "experimento.dat"






Como podemos ver esta grafica nos imprimio los nombres de la grafica anterior, como solucionamos esto?, solamente tecleamos esto:

gnuplot> reset




Como pueden ver la grafica queda limpia y sin los nombres que le habiamos dado.

Toma en cuenta que el archivo con los datos debe estar en el mismo directorio desde donde ejecutaste gnuplot. De lo contrario, debes indicar, entre comillas, la ruta completa. También considera que la primera y segunda columna del archivo serán los ejes X y Y, respectivamente.

¿Se puede dibujar una sola columna de esos datos? Claro que sí, dibujaremos solamente la columna primera y segunda de los datos del archivo "experimentos.dat"

Para realizar esto debemos ejecutar esta secuencia de comandos:

gnuplot>set style data lines

gnuplot>plot 'experimentos.dat' using 1:2


El comando using especifíca la columna que será dibujada, si los datos están en 3 columnas, hay muchas posibilidades de dibujar, por ejemplo al usar... using 3:2 se dibujará la columna 3 en el primer eje X y la columna 2 en el segundo eje Y.

Si necesitáramos hacer operaciones con los datos de una o algunas columnas y esos resultados graficarlos como otra columna, es posible hacerlo en gnuplot. Bueno, hay varias maneras de hacerlo, una de ellas es hacer las operaciones en otro programa como una hoja de cálculo. Pero, la manera más fácil (si ya se tiene gnuplot ) es usar esas capacidades que se incorporaron desde la versión 3.7. Vamos a suponer por ahora que el archivo 'experimentos.dat' contiene los datos de las componenetes x, y, z de la velocidad que es la que queremos dibujar. La velocidad está determinada mediante la expresión


La manera de hacerlo en gnuplot es calcular esa velocidad como:

gnuplot> plot 'experimientos.dat' \

> using (sqrt($1**2+$2**2+$3**2))







Note que la línea diagonal \ nos permite escribir en el siguiente renglón, y el comando se ejecutará hasta después de haber pulsado enter. También hay que notar que las columnas se especifican con $1, o $2, o $3 y las potencias con **, como por ejemplo 3^2 así se escribe en gnuplot como 3**2. Note que los paréntesis que acotan la expresión son importantes.

Para graficar una función 3D, debes utilizar el comando splot. Los rangos se definen aparte.

El rango en X.
gnuplot> set xrange [-2:2]
El rango en Y.
g
nuplot> set yrange [-2:2]

Usando splot y con exp, el exponente de -x que multiplica a x
gnuplot> splot exp(-x * x) * exp(-y * y)




Para salir de gnuplot utilizamos:
gnuplot>exit


Pequeño ejemplo en python:
Para hacer funcionar python-gnuplot, primero tenemos que instalarlo, nos iremos a synaptic package manager de ubuntu y lo buscaremos de esta manera python-gnuplot. Para que la libreria import gnuplot pueda funcionar sin problema al compilar.

programa sencillo:




Bibliografias
Esta pagina ayudara mucho a enteder lo que estoy explicando.
http://computacion.cs.cinvestav.mx/~acaceres/courses/gnuplotCurso/node3.html

Aqui encontraran mas funciones sobre gnuplot
http://gnuplot.sourceforge.net/demo_4.2/

No hay comentarios:

Publicar un comentario en la entrada