Sunteți pe pagina 1din 4

gnuplot

Para ejecutar el ambiente de gnuplot, teclear desde la terminal


gnuplot
El comando ms simple y usado en gnuplot es plot

Cualquier comando, subcomando u opcin puede ser abreviada a la forma ms


corta que no sea ambigua.
plot "precios" using 1:2 with lines, "precios" using 1:3 with linespoints
plot "precios" u 1:2 w l, "precios" u 1:3 w lp
plot "precios" u 1:2 w l, "" u 1:3 w lp

plot sin(x) # se grfica la funcin seno

El comando para guardar y cargar comandos son respectivamente los que aparecen
en los siguientes ejemplos:

se pueden agregar ms funciones para graficar junto a la funcin seno, estas


se van separando con comas
plot sin(x), x, x-(x**3)/6

save "graph.gp"
load "graph.gp"

El rango es dado empleando corchetes inmediatamente despus del comando plot


El primer par de corchetes define el rango de valores para x; el segundo
restringe el rango de los valores de y mostrados.

Los archivos de comandos son archivos de texto planos, conteniendo generalmente


un comando por lnea. Varios comandos pueden ser combinados en una sola
lnea separndolos con punto y coma (;). El smbolo de nmero es interpretado
como el inicio de un comentario.

plot [][-2:2] sin(x), x, x-(x**3)/6

Exportando grficas

Para graficar datos desde un archivos encerrarlo entre comillas dobles.

Para cualquier grfica que se quiera generar, se necesita indicar dos cosas:
el formato de la grfica (GIF, JPG, PNG, etc) y el dispositivo de salida,
ya sea un archivo o la pantalla. En gnuplot, se hace mediante el comando
set:

plot "precios"
Si se quieren seleccionar las columnas que sern usadas como valores de x e y
se deber usar la directiva using con el comando plot.
plot "precios" using 1:2

set terminal png


# escoger el formato de la grfica
set output "migrafica.png" # escoger el dispositivo de salida

Si se quiere graficar el precio de los bienes XYZ en la misma grfica hacer


plot "precios" using 1:2, "precios" using 1:3
Para indicarle a gnuplot que estilo usar para los datos, hacerlo con la
directiva with.
plot "precios" using 1:2 with lines, "precios" using 1:3 with linespoints
Gnuplot automticamente proporciona un ttulo, el cual muestra un ejemplo
de la lnea o el tipo de smbolo usado para cada conjunto de datos junto
con una descripcin de texto, pero la descripcin por defecto no es muy clara
en estos casos. Se puede indicar el texto que se quiera para un conjunto de
datos como parte de la grfica con la directiva title:

El flujo completo para generar un archivo PNG con gnuplot sera:


plot exp(-x**2)
set terminal png
set output "graph.png"
replot
set terminal x11
set output

#
#
#
#
#
#
#
#

algn comando para graficar


seleccionar el formato del archivo
indicar el nombre del archivo
repetir el ltimo comando de graficacin
con la salida yendo al archivo indicado.
restaurar la configuracin a la terminal
mandar la salida a la pantalla nuevamente
empleando un archivo vaco

Conjuntos mltiples de datos por archivo: index


Una lnea en blanco indica una discontinuidad en los datos. Los datos encima
y debajo de la lnea en blanco sern tratados como pertenecientes al mismo
conjunto.

plot "precios" using 1:2 with lines title "PQR", \


"precios" using 1:3 title "XYZ" with linespoints
Cmo se correlaciona el precio de PQR con XYZ?

Dos lneas en son usadas para distinguir conjuntos de datos en el archivo.


Cada conjunto puede ser direccionado por el comando plot como si este
estuviera separado en un archivo, usando la directiva index con plot.

plot "precios" using 2:3 with points

La directiva index se pone enseguida del nombre del archivo en la sintaxis


de plot y se le pone al menos un argumento numrico indicando cual conjunto
del archivo se selecciona. El primer conjunto es identificado con el cero.

gnuplot
Para graficar solamente la funcin de correlacin para t=1000 (es el segundo
conjunto de datos).

csplines Aplica una transformacin nica, entonces calcula splines cbicas


naturales al resultado y las grafica. La curva resultante pasa exactamente
a travs de todos los puntos de datos. Como opuesto a la curva de Bzier, la
cual esta definida para el conjunto entero de datos, splines estn definidas
localmente (entre dos puntos de datos consecutivos) y unidos suavemente en los
puntos. Esta es aplicable para datos que ya estn muy suaves.

plot "data" index 1 using 1:2 w linespoints


La directiva index puede emplear hasta tres argumentos separados por dos
puntos (:)
index {ent:inicio}[:{ent:final}][:{ent:incr}]

acsplines Aplica la transformacin nica al conjunto de datos, entonces


forma una aproximacin de splines cbicas pesadas. El peso es tomado de un
tercer argumento obligatorio.

Registros dispersos en lneas mltiples: every


En data2 cada registro para un determinado tiempo se encuentra en dos lneas
la primera lnea da la temperatura y el segundo la presin. Si se quiere
grafica slo la temperatura contra el tiempo, se emplea la directiva every
para escoger los registros del subconjunto de lneas:

plot "precios" using 1:2 with linespoints,\


"" using 1:2 title "bezier" smooth bezier,\
"" using 1:2 title "csplines" smooth csplines
Matemticas en gnuplot
Expresiones matemticas

plot "data2" every 2 using 1:2 with lines


Empleando la directiva every, se puede controlar como se avanza a travs de
lneas.
every {ent:incr}[::{ent:inicio}[::{ent:final}]]
El primer argumento es el incremento, seguido (opcionalmente) por la primera
y la ltima lnea. Los nmeros de lnea se cuentan a partir de cero.
Gnuplot proporciona la directiva smooth al comando plot como una herramienta
simple para graficar archivos de datos con ruido o desordenados. La directiva
smooth toma un parmetro adicional, el cual deber ser uno de los siguientes:
unique, frequency, bezier, sbezier, csplines, acsplines
La directiva unique ordena los valores dados por la sentencia using para el
eje x. Si algn valor de x se repite, este ser reemplazado con un solo dato
teniendo el promedio de todos los valores y correspondientes.
plot "desordenado" u 1:2 smooth unique with linespoints
El segundo uso para unique es para manejar datos desordenados en archivos.
plot [1989:1994][25:34] "descuidado" using 1:2 smooth uniq with linesp,\
"" using 1:2 with points
Suavizando datos con ruido
bezier Calcula y grafica una aproximacin de Bzier de orden n, donde n es
el nmero de puntos de datos. La curva est garantizada para que pase a travs
del primer dato y el ltimo, pero en general no pasar a travs de alguno de
los puntos internos. La curva resultante usualmente aparece particularmente
suave.
sbezier Primero aplica la transformacin nica a los datos, y entonces
calcula y grafica una aproximacin de Bzier a los resultados.

Para consultar los operadores disponibles revisar la ayuda


help operators unary
help operators binary
help operators ternary
Para conocer la funciones disponibles revisar la ayuda
help functions
El usuario puede definir variables y funciones
e = 2.71828182845905
# La base de los logaritmos naturales
sqrt2 = sqrt(2)
# la raz cuadrada de dos
euler = 0.57721566490153 # La constante de Euler-Mascheroni
Ejemplos de funciones definidas por el usuario functions
f(x) = -x * log(x)
gauss( x, m, s ) = exp( -0.5*( (x-m)/s )**2 )/sqrt(2*pi*s**2)
# Usando el operador factorial para generar los coeficientes binomiales
binom( n, k ) = n!/(k!*(n-k)!)
min( a, b ) = ( a < b ) ? a : b # Usando el operador ternario ?
step( x ) = ( x < 0 ) ? 0 : 1
# Un pedazo de funcin
plot sin(x), f(x)
Por defecto, gnuplot supone que la variable independiente, la cual es
automticamente reemplazada por un rango de valores de x cuando se
grafica la funcin est etiquetada por x, pero puede ser cambiada usando
el comando set dummy. Por ejemplo,
set dummy t
har que t sea la variable independiente.
Todas las otras variables que estn en la definicin de una funcin,
debern tener valores asignados antes de que se pueda graficar la
funcin.
g(x) = cos(a*x)/a
plot a=1, g(x), a=2, g(x)

gnuplot
Todas las funciones y variables tienen alcance global.
Los nmeros complejos son pares de nmeros, las conocidas parte real e
imaginaria. En gnuplot, un nmero complejo es indicado mediante llaves
({}). El nmero complejo z = 1 + i es representado por la expresin

Otra forma de seleccionar una columna es usando la funcin column(x)


plot "data" using 1:($2 + 1.5*column(-2)) with lines
Graficando funciones y datos

z = { 1, 1 }
Muchas de las funciones matemticas internas, tales como sin(x), exp(x),
y otras, pueden aceptar argumentos complejos y regresar nmeros complejos
como resultados. Las funciones especiales real(x) e imag(x) toman la
parte real e imaginaria del nmero complejo x, respectivamente. Una
limitante importante de los nmeros complejos en gnuplot es que ambas
partes debern ser constantes numricas, no variables, ni expresiones. El
siguiente comando graficar la parte real e imaginaria de la funcin
exponencial, evaluada para un argumento imaginario.
plot real( exp(x*{0,1}) ), imag( exp(x*{0,1}) )
Transformaciones de Datos
Transformaciones simples de datos
Una funcin arbitraria puede ser aplicada a cada punto de datos como
parte de la directiva using en el comando plot. Si un argumento a usar
est encerrado entre parntesis, este no ser tratado como un nmero de
columna, pero si como una expresin a ser evaluada. Dentro de los
parntesis, se puede acceder los valores de las columnas para el registro
actual precediendo el nmero de la columna con el smbolo de moneda ($).
Para grafica la raz cuadrado de los valores encontrados en la segunda
columna contra los valores en la primera columna,
plot "precios" using 1:( sqrt($2) ) with lines
Para graficar el promedio de la segunda columna y la tercera
plot "precios" using 1:( ($2+$3)/2 ) with lines
Pseudocolumnas y la columna funcin
Gnuplot define dos pseudocolumnas que pueden ser usadas junto con las
transformaciones de datos. La columna 0 contiene el nmero de lnea
en el conjunto de datos actual; la columna -2 contiene el ndice del
conjunto actual de datos dentro del archivo de datos. Cuando una doble
lnea en blanco es encontrada en el archivo, el nmero de lnea se
reinicia a cero y el ndice del conjunto es incrementado.
plot "precios" using 0:1 # Grafica la primera columna contra el nmero de lnea
plot "precios" using 1:-2 # Grafica el ndice del conjunto de datos contra la
# primera columna

Con set samples se controla el cantidad de puntos con los que una
funcin ser evaluada para generar una grfica. El valor por defecto
son 100 puntos.
La opcin set clip controla como gnuplot pone los puntos que estn muy
cercanos o lejanos del rango de graficacin:
set clip points
set clip [ one | two ]
Trucos y advertencias
* La divisin entera se trunca 1/4=>0 1/4.0=1.0/4=>0.25
* Para suprimir puntos de datos o generar un pedazo de una funcin
emplear los valores no definidos.
f(x) = abs(x) < 1 ? 1 : 1/0
plot [-2:2][0:2] f(x)
plot "precios" using 1:( $2 < 100 ? $2 : 1/0 ) with linespoints,\
"" using 1:( $3 < 100 ? $3 : 1/0 ) w l
Grficas logartmicas
set logscale
#
set logscale x
#
set logscale y
#
unset logscale
#
unset logscale x #
unset logscale y #

Encender el graficado logartmico en ambos ejes


Encender el graficado logartmico para el eje x solamente
Encender el graficado logartmico para el eje y solamente
Apagar el graficado logartmico en ambos ejes
Apagar el graficado logartmico para el eje x solamente
Apagar el graficado logartmico para el eje y solamente

A continuacin se muestran el nombre y el contenido de los archivos de datos


empleados en este material.
precios
# Precio promedio de PQR y XYZ (en pesos por parte) por ao calendario
1975
49
162
1976
52
144
1977
67
140
1978
53
122
1979
67
125
1980
46
117
1981
60
116
1982
50
113
1983
66
96
1984
70
101
1985
91
93
1986
133
92
1987
127
95
1988
136
79

gnuplot
1989
1990
1991
1992
1993
1994
1995

154
127
147
146
133
144
158

78
85
71
54
51
49
43

data
# Simulacin de transicin Lquido/Slido - densidad=0.0017
# x: primera col; corr(x): segunda col
# t=0
0
0.99
1
0.03
2
0.01
3
0.02
4
0.01

# Temperatura de tres ciudades


# Cdigos de ciudades (3a columna): Morelia (=1), Zamora (=2), Uruapan (=3)
# Formato: Ao Temperatura Ciudad
# ... Morelia y Zamora solamente, anualmente
1990 32 1
1990 29 2
1991 33 1
1991 27 2
1992 31 1
1992 29 2
1993 32 1
1993 26 2
# ... ahora Uruapan, bianual
1991 27 3
1993 29 3
desordenado

# t=1000
0
0.98
1
0.10
2
0.05
3
0.01
4
0.02

1970
1974
1979
1971
1973
1978
1980

# t=2000
0
0.99
1
0.32
2
0.14
3
0.08
4
0.03

1
4
4
3 # no ordenado!
6
5
2

Nota: el siguiente archivo deber ser guardado con alguna codificacin del tipo
ISO-8859 para que se muestre correctamente las vocales acentuadas y la letra
genera.sh

data2
# tiempo - valor
0
100.03
#
0
2.10
#
1
100.26
#
1
2.02
#
2
101.34
#
2
1.95
#
3
102.41
#
3
1.87
#

descuidado

temperatura
presin
t
p
t
p
t
p

echo
echo
echo
echo
echo
echo
echo
echo
echo
echo

set key on center top box > tmp.txt


set terminal postscript enhanced color solid >> tmp.txt
set encoding iso_8859_1 >> tmp.txt
set xlabel \"Ao\" >> tmp.txt
set ylabel \"Precio Promedio Anual\" >> tmp.txt
set title \"Comportamiento del Producto PQR vs XYZ\">>tmp.txt
set xtics 2 >> tmp.txt
set ytics nomirror \# Espejo del sistema primario apagado >> tmp.txt
set y2tics 30,20,190 \# Encender el sistema secundario >> tmp.txt
plot \\ >> tmp.txt

echo
echo
echo
echo

[][20:200]
\"\" using
\"\" using
\"\" using

\"precios\" using 1:2 title \"Producto PQR\" w p,\\>>tmp.txt


1:2 smooth bezier title \"Aproximacin PQR\" w l,\\>>tmp.txt
1:3 title \"Producto XYZ\" w p, \\ >> tmp.txt
1:3 smooth csplines title \"Aproximacin XYZ\" w l>>tmp.txt

cat tmp.txt | gnuplot > comportamiento.eps

S-ar putea să vă placă și