Vous êtes sur la page 1sur 8

Parte III

Gnuplot
Uso de gnuplot gnuplot es una aplicacion de libre distribucin que sirve para hacer o representaciones grcas de funciones matemticas y datos experimentales. Es un programa a a que no tiene interfaz grca de usuario 10 sino que se introducen las rdenes de forma intea o ractiva. El programa est disponible para una gran variedad de plataformas: estaciones Unix, a Vax/VMS, Ms-Dos, Windows y GNULinux. En las distribuciones de GNULinux suele venir el paquete gnuplot aunque no siempre se instala de forma predeterminada. El programa dispone de abundante documentacin publicada en Internet. o

14.

Entrando y saliendo de gnuplot

Para invocar el programa nos situamos sobre una terminal de X-Window y respondemos al prompt de GNULinux con la orden: user@e2$>gnuplot El terminal entrar entonces en un modo comando con un nuevo prompt a gnuplot> y esperar a que se le introduzca una orden vlida de gnuplot para ejecutarla. Todas las a a instrucciones de gnuplot se introducen a partir de este prompt. Realmente no son necesarias muchas rdenes para producir una salida brillante. o El programa gnuplot contiene ayuda en ingls. Basta con teclear: e gnuplot>help para obtener ayuda genrica o: e gnuplot>help nombre_de_comando para obtener ayuda sobre un comando de gnuplot vlido. Por ejemplo, si hacemos: a gnuplot>help exit veremos que la instruccin exit sirve para terminar la sesin de gnuplot. o o

15.
15.1.

Comandos bsicos a
Dibujando

Lo primero que se hace en gnuplot es ver la grca de una funcin elemental. Pruebe con: a o gnuplot>plot sin(x)
10

Es de decir, no tiene mens desplegables. u

51

15.1 Dibujando

Observar que se crea una aplicacin grca en la que se ve la funcin, los ejes y un pea o a o queo t n tulo para la funcin. El comando que gobierna el dibujo en gnuplot es unicamente o plot. Adems de este comando existen otros muchos para modicar los ejes, las etiquetas, las a leyendas y la salida grca, que iremos viendo poco a poco. a Si lo que pretendemos es dibujar una serie de puntos experimentales la cosa es un poco ms complicada. Primero necesitamos tener un chero con los datos ordenados por columnas a en formato de texto ASCII. El chero debe contener al menos una columna. Se introduce entonces la orden: gnuplot>plot fichero u[sing] 2:3 Es importante introducir el nombre del chero entre comas dobles o comas simples. La orden u[sing] 2:311 seala las columnas del chero que se representan. En este caso la columna n segunda har de columna x y la columna tercera har de columna y. Si no se seala la opcin a a n o using se usa using 1:2. La sintaxis completa del comando plot es: gnuplot>plot {[xmin:xmax] {title titulo O gnuplot>plot {[xmin:xmax] {title titulo O [ymin:ymax]} funcion notitle} {with estilo} [ymin:ymax]} fichero u xcol:ycol notitle} {with estilo}

En estas expresiones los comandos entre llaves ({}) no tienen porque escribirse si no se desea modicarlos. El primer argumento [xmin:xmax] [ymin:ymax] modica los valores que gnuplot colocar para los mximos y m a a nimos del eje. Observe las siguientes diferencias: gnuplot>plot gnuplot>plot gnuplot>plot gnuplot>plot sin(x) [-pi:pi] sin(x) [][0:1] sin(x) [-pi:pi][0:1] sin(x)

En la primera grca gnuplot elige los valores mximos y m a a nimos de los ejes. En la segunda grca se modica slo el eje X. En la tercera grca se modica slo el eje Y, pero obsrvese a o a o e que es necesario anteponer dos corchetes vac para sealar que nos referimos al eje Y. La os n tercera grca modica los dos ejes. a El tercer argumento de plot tambin es opcional: controla las propiedades de la etiqueta e de t tulo de la grca. El programa gnuplot asigna de forma predeterminada el nombre de la a funcin o del chero de datos como t o tulo de la grca. Podemos elegir la opcin: a o title aqu pongo mi ttulo para poner un t tulo ms razonable. O simplemente: a notitle para que no aparezca ning n tipo de t u tulo. Por ultimo, la opcin with controla la forma de la grca y sus argumentos pueden ser, o a entre otros:
11

Las letras que estn entre corchetes no es necesario escribirlas. a

52

15.2 Deniendo funciones

with with with with with

points lines linespoints impulses boxes

De forma predeterminada gnuplot asigna el valor lines para las grcas de funciones y el a valor points para las grcas de cheros de datos. a Finalmente, hay que sealar que el comando plot permite el dibujo de varias grcas a la n a vez, tanto de funciones como de cheros o mezclas de unas y otras: gnuplot>plot funcion1,funcion2,fichero1 u 1:2, fichero1 u 1:4, fichero2 u 2:3 Como se ve cada una de las grcas se separa por comas. Slo se puede modicar los ejes una a o vez, escribiendo los valores mximos y m a nimos antes de la primera grca. En cambio, en a cada una de las grcas por separado podemos modicar el argumento title y with a gnuplot>plot [-pi:pi][0:1] sin(x) title Funcin seno with points, o exp(x) notitle

15.2.

Deniendo funciones

En gnuplot el usuario puede denir funciones y constantes de forma fcil. Por ejemplo: a gnuplot>f(x)=a+b*x gnuplot>g(x,a,b)=a+b*x gnuplot>h(x)=a*x**2+b*x**3 gnuplot>r=8.31 gnuplot>d=24.0 Las operaciones y funciones son las elementales. Usa la sintaxis del lenguaje de programacin o Fortran y para elevar a una potencia se usa un doble asterisco. En el ejemplo anterior h(x) = ax2 + bx3 . Estas funciones pueden usarse despus con el comando plot pero con un e requisito importante: las funciones deben dar valores numricos para poder ser dibujadas. As e : gnuplot>plot f(x) producir un error ya que a,b no tiene valor, mientras que: a gnuplot>plot g(x,1.0,2.0) dibujar la recta 1.0+2.0*x. a Pero tambin se pueden denir valores de constantes: e gnuplot>f(x)=a+b*x gnuplot>a=12.0 gnuplot>b=2.0 gnuplot>plot f(x) 53

15.3 Operaciones entre columnas

dibuja la recta 12.0+2.0*x. Tenga cuidado al manejar las constantes: no es lo mismo 12.0 que 12. El primer caso es un nmero real y el segundo un nmero entero. La operacin 12.0/5.0 da como resultado u u o 2.4 mientras que la operacin 12/5 da 2 porque gnuplot la entiende como el cociente de dos o nmeros enteros y expresa el resultado como otro nmero entero. u u

15.3.

Operaciones entre columnas

Cuando usamos un chero de datos como fuente para dibujar grcas, gnuplot no se limita a a dibujar combinaciones entre columnas de datos sino que podemos representar en el eje X o en el eje Y cualquier columna del chero de datos, modicada por cualquier funcin. o Hemos visto que para identicar la columna del chero de datos con un eje de la grca a se usa el comando u[sing] seguido del nmero de la columna. Si queremos que un eje se u identique, no con una columna del chero de datos, sino con cualquier funcin de una columna o del chero de datos, se tiene que especicar entre parntesis para indicarle a gnuplot que e continua una operacin matemtica; en esta operacin, cualquier columna del chero de datos o a o se especica con el operador $ seguido del nmero de la columna. As $1 es la primera columna u , del archivo, $2 la segunda, etctera. e Para introducir la funcin se pueden usar todas las funciones elementales del lgebra sio a guiendo la sintaxis explicada en la seccin 15.2. As por ejemplo: o gnuplot>plot fichero u 1:($2*$2+$3$3) representar la suma de los cuadrados de la segunda y tercer columna frente a la primera. En a este caso se modica la columna y pero tambin se puede modicar la columna x. Por ejemplo: e gnuplot>plot fichero u ($1+273.15):2 Finalmente, tambin es posible modicar las columnas de chero mediante funciones previae mente denidas o funciones elementales. Por ejemplo: gnuplot>plot fichero u (log($1)):(f($2)+g($3))

ATENCION
El uso de esta tcnica puede simplicar mucho los clculos cuando se pretende ree a presentar una grca con expresiones derivadas de datos experimentales. Puede hacer a innecesario el uso de una planilla de clculo (como OpenOce Calc o gnumeric) paa ra hacer este tipo de grcas. No obstante, gnumeric ser necesario para calcular los a a valores que deben ponerse en las tablas de datos experimentales.

15.4.

El comando set

El comando plot sirve para dibujar una funcin o un chero de datos, pero slo permite o o modicar ligeramente el aspecto de la curva. El comando set controla casi todos los parmetros a de la curva. Se incluye entre estos controles la opcin de modicar los ejes. As o : 54

15.4 El comando set

gnuplot>set xrange [xmin:xmax] gnuplot>set yrange [xmin:xmax] cambia los valores predeterminados por gnuplot para los valores mximos y m a nimos de los ejes. Es diferente de modicar los eje en el comando plot en el sentido de que con set la actuacin es permanente mientras que en plot slo vale para el grco al que se aplica. o o a Otras posibilidades del comando set son: gnuplot>set xlabel etiqueta para el eje x gnuplot>set ylabel etiqueta para el eje y Las opciones label ponen t tulos a los ejes. Pruebe: gnuplot>set xrange [-pi:pi] gnuplot>set yrange [0:1] gnuplot>set xlabel ngulo A gnuplot>set ylabel funcin o gnuplot>plot cos(x) gnuplot>plot sin(x) El formateo de los ejes naliza con el orden set ticks que controla las etiquetas numricas e que aparecen en cada uno de los ejes. Las posibilidades son: gnuplot>set xtics 0,0.5,10 gnuplot>set xtics (5 1, 2,Hola 3) gnuplot>set noxtics En la primera forma gnuplot producir marcas en los valores 0, 0.5, 1, 1.5, 9.5, 10. En la a segunda forma gnuplot marcar los valores 1, 2, 3. En 1 colocar un 5, en 2 no colocar nada a a a y en 3 colocar el texto Hola. La ultima opcin elimina todas las marcas. a o Por supuesto, las mismas opciones son vlidas para ytics. a Otra opcin congurable muy importante es logscale. Este acta de la siguiente forma: o u gnuplot>set gnuplot>set gnuplot>set gnuplot>set logscale x logscale xy logscale y nologscale

En la primera opcin el eje X se convierte en logar o tmico. En la segunda opcin los dos o ejes se hacen logar tmicos. En la ultima opcin se vuelve a escala lineal. o set grid dibuja un mallado por toda la grca en las posiciones especicadas por las a marcas de los ejes. set label nombre texto at xpos,ypos crea una etiqueta a la que se le pone un nombre y se escribe el texto especicado en las posiciones especicadas por las coordenadas xpos,ypos. El nombre sirve por si se quiere mover el mismo texto a otra posicin usar el coo mando set nombre at xpos2,ypos2. Es importante sealar que las coordenadas xpos,ypos n se reeren coordenadas f sicas de los ejes. Por ejemplo: gnuplot>set label 1 Mnimo at pi,-1.05 gnuplot>plot [][-2:2] cos(x) gnuplot>set label 1 at -pi,-1.05 gnuplot>plot [][-2:2] cos(x) 55

15.5 El comando replot

15.5.

El comando replot

Otra potente utilidad de gnuplot es el comando replot. Cuando se modican algunas o muchas opciones de un grco, no es necesario volver a escribir toda la sentencia del comando a plot basta con inrtoducir replot y gnuplot dibujar la ultima grca con las ultimas opciones a a introducidas. Por ejemplo: gnuplot>plot cos(x),sin(x) with points gnuplot>set xlabel ngulo a gnuplot>set ylabel f senoidal gnuplot>set tics (2 pi -2*pi,-pi -pi,0,pi pi,2pi 2*pi) gnuplot>set xrange [-2pi:2pi] gnuplot>replot

15.6.

Ajuste de funciones por el mtodo de m e nimos cuadrados

Con el programa gnuplot se pueden ajustar datos experimentales a rectas o a cualquier otra funcin. Para ello se usa la instruccin fit. Primero hay que denir una funcin: o o o gnuplot>f(x)=a+b*x En este caso una recta, pero puede ser cualquier otro tipo de funcin. o Para hacer el ajuste se usa: gnuplot>fit f(x) fichero u colx:coly via a,b El programa gnuplot buscar los mejores valores de a,b y los mostrar junto con la matriz a a de correlacin. Una vez hecho el ajuste se puede dibujar la recta de ajuste y el chero de datos: o gnuplot>plot f(x) fichero u colx:coly No es necesario especicar los valores de a,b porque ya han sido especicados por fit. Datos numricos del ajuste: Se puede obtener mucha informacin de los resultados del e o ajuste de gnuplot. En la pantalla presenta la correlation matrix of the fit parameters, que expresa la relacin entre los coecientes del ajuste. En nuestro caso la relacin entre a y o o a es, obviamente, perfecta y por denicin su valor es la unidad; lo mismo con b. La relacin o o entre a y b es el coeciente de correlacin. Slo los presenta con tres decimales cuando lo o o correcto es expresar tantos 9 como haya en el valor de r y, adems, la siguiente cifra. a Ms arriba se encuentra rms of residuals (stdfit) que corresponde al valor de el resia duo medio. En el rengln siguiente hacia arriba se encuentra el number of degree of freedom o que representa el n mero de grados de libertad12 , que es justamente N 2. u Finalmente, ms arriba est la final sum of squares of residuals que es el valor m a a ni2. mo de
12

Nmero de puntos menos nmero de parmetros del ajuste. u u a

56

15.7 Guardando una grca a

Grca de residuos: Tambin se puede obtener la grca de los residuos del ajuste de a e a m nimos cuadrados obtenido por gnuplot. Para ello se usa la tcnica explicada en la seccin 15.3 e o y se introduce una de las siguientes instrucciones: gnuplot>plot fichero u colx:($coly-f($colx)) gnuplot>plot fichero u colx:(1-f($colx)/$coly) Aqu el primer u[sing] utiliza la colx como columna del eje de ordenadas mientras que para el eje de abcisas usa la frmula ($coly-f($colx)) que es la diferencia entre el valor de la o columna $coly y el valor de la recta de ajuste f(x) evaluada en el punto $colx, es decir, el valor del residuo i . La segunda instruccin dibuja la diferencia relativa, en tantos por uno, siempre que no o pasemos por el punto y = 0.

15.7.

Guardando una grca a

El programa gnuplot permite guardar y cargar grcas. Una vez que hemos terminado de a hacer nuestro grco, colocando correctamente los t a tulos de los ejes, de las guras, las marcas etiquetas etc. la orden: gnuplot>save nombredearchivo.gp la grabar en un chero. a Posteriormente la orden: gnuplot>load nombredearchivo.gp cargar una grca especicada. a a A No es necesario usar el programa gnuplot para hacer una grca. Como ocurre con L TEX 2 a podemos usar cualquier editor de texto ASCII para introducir cada una de las rdenes necesao rias. Se graba el chero y despus se usa load para cargar el trabajo hecho con anterioridad. e

16.

Obteniendo el chero de una grca a

Hasta ahora sabemos cmo hacer una grca y cmo verla en pantalla. Sin embargo, o a o A es necesario obtener una copia de la grca para poder incluirla en un chero L TEX 2 o a simplemente para imprimirla. Para ello gnuplot tiene la instruccin set term[inal]. Esta o instruccin controla hacia dnde se dirige la salida de la grca. Se puede usar: o o a gnuplot>show term para observar la terminal actual. En el caso de usar GNULinux se obtiene x11 mientras que en Windows se obtiene win. Ambas permiten en cada sistema operativo observar la grca. a Para obtener un chero lo mejor es usar una de estas dos opciones: gnuplot>set term post gnuplot>set term latex La primera sita la terminal en tipo Encapsulated PostScript mientras que la segunda u A lo har en tipo L TEX 2 . Posteriormente hay que sealar un chero: a n 57

gnuplot>set output nombre_de_fichero.extension en el primer caso se le pone la extensin .eps y en el segundo .tex. Finalmente haciendo: o gnuplot>replot tendremos nuestra grca en el chero con el formato que hayamos elegido. a En un principio es ms cmodo el formato Encapsulated PostScript puesto que se a o puede imprimir directamente13 con un programa intrprete de Encapsulated PostScript e A , como por ejemplo gv. El chero .eps tambin se puede incluir dentro de un texto L TEX 2 e tal y como se describe en la seccin 10.2. o A El formato L TEX 2 produce un dibujo en ese formato. Su ventaja es que podemos incluir A en los textos comandos de L TEX 2 . Por ejemplo si hacemos: gnuplot>set xtics ($\\-pi$ -pi,0,$\\pi$ pi) al escribir la etiqueta $\\pi$ primero entra en modo matemtico $$ y despus escribir la a e A letra en vez de pi. Es importante sealar que los comandos L TEX 2 hay que introducirlos n \\ en vez de \ que es lo normal. A A Posteriormente los dibujos L TEX 2 pueden incluirse en un texto L TEX 2 tal y como se describen la seccin 10.2 salvo que se usa input en vez de includegraphics y no hay otras o opciones posibles: \begin{figure} \centering \input{nombredefichero.tex} \caption{Una prueba de LaTeX y gnuplot} \end{figure}

13

Una vez que hayamos salido de gnuplot.

58

Vous aimerez peut-être aussi