Professional Documents
Culture Documents
Hasta ahora hemos visto las bases para crear programas sencillos en Python. Para poder crear
programas un poco m s poderosos es conveniente saber usar algunas herramientas m s fuertes
a
a
como la librera num rica de Python, numpy, junto con algunos consejos que pueden resultar
5.1.
Numpy
Acr nimo de Python num rico en ingl s, esta librera provee una de las herramientas m s
o
e
e
utiles en el c mputo cientco: los arreglos n-dimensionales. Para denir un arreglo de este tipo se
o
utiliza array:
>>a=array([1.2,2.2,4.5])
Cabe destacar que se utilizan tanto los par ntesis como los par ntesis cuadrados, en ese orden,
e
e
al momento de denir un arreglo entrada por entrada. Si en cambio se requiere de un arreglo de
n meros consecutivos se puede utilizar arange:
u
>>> b=arange(0.1,1,0.1)
>>> print b
[ 0.1 0.2 0.3 0.4 0.5
>>>
0.6
0.7
0.8
0.9]
los argumentos de arange son (origen, nal, tama o del paso). En caso de que no se especifque
n
el tama o del paso, este ser por default 1. Si no se especca el origen, este ser por default 0.
n
a
a
Tambi n se pueden denir arreglos con puros ceros o unos:
e
57
58
>>> b=zeros(10).reshape(2,5)
>>> b
array([[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
>>> b=ones(10)
>>> b
array([ 1., 1., 1., 1., 1., 1.,
1.,
1.,
1.,
1.])
e
los ejes.
b.max(): lo mismo que el anterior s lo que ahora es el m ximo.
o
a
Una de las grandes ventajas de numpy es que permite un manejo sencillo de los arreglos. De
esta manera, si dos arreglos son del mismo tama o podemos sumarlos o restarlos.
n
>>> a=ones(3)
>>> a
array([ 1., 1., 1.])
>>> b=ones(10)
>>> b
array([ 1., 1., 1., 1., 1., 1., 1.,
>>> a+b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
1.,
1.,
1.])
5.2. MATPLOTLIB
59
2.,
2.,
2.,
2.,
2.,
2.,
2.,
2.])
Si los arreglos se usan como matrices dot(a,b) regresa el producto de las dos matrices con
las mismas condiciones que se requieren para un producto de matrices.
Otra de las partes m s utiles de esta librera es la de algebra lineal. Algunas de las funciones
a
5.2.
Matplotlib
Podramos decir que con estas libreras tenemos cubierta buena parte del algebra necesaria para
solucionar muchos problemas fsicos. Sin embargo todava no podemos gracar todos los resulta
dos obtenidos sin tener que usar alguna herramienta exterior. matplotlib es una de las mejores y
m s desarrolladas herramientas para gr cas 2D que junto con numpy y scipy forman pylab, una
a
a
alternativa para matlab. Para usar pylab de manera similar a matlab usamos la versi n interactiva
o
de python:
ipython -pylab
Una vez ah podemos gracar cosas muy f cilmente por medio del comando plot() que toma
a
como argumento la funci n que se quiere gracar
o
t=arange(0.0, 2.0*pi, 0.1)
plot (t)
plot (t,t)
plot(sin(t), cos(t))
60
Se pueden colocar nombres a los ejes usando xlabel(nombre) y ylabel(nombre) . Tambien se puede colocar una malla de fondo como referencia usando grid(True) .
Para colocar dos funciones en una misma gr ca usamos
a
t = arange(0.0, 5.0, 0.05)
s1 = sin(2*pi*t)
s2 = s1*exp(-t)
plot(t, s1, t, s2)
Se puede agregar una leyenda con el comando
legend((sine wave, damped exponential))
Se pueden tambi n hacer subgr cas (Figura 5.1):
e
a
from pylab import *
def f(t):
return cos(2*pi*t) * exp(-t)
t1 = arange(0.0, 5.0, 0.1)
t2 = arange(0.0, 5.0, 0.02)
subplot(211)
l = plot(t1, f(t1), bo, t2, f(t2), k)
grid(True)
title(2 subplots)
ylabel(Damped)
subplot(212)
plot(t2, cos(2*pi*t2), r>)
grid(True)
xlabel(time (s))
ylabel(Undamped)
show()
Se pueden visualizar otras cosas como n meros aleatorios (Figura 5.2):
u
from pylab import *
clf()
X = rand(20,20)
im = imshow(X)
pcolor(X)
Es f cil cargar y guardar archivos usando pylab, simplemente se usa el comando load(filename)
a
para cargar y save(filename,X) para guardar un arreglo X en filename.
5.2. MATPLOTLIB
61
2 subplots
Undamped
Damped
1.0
0.8
0.6
0.4
0.2
0.0
-0.2
-0.4
-0.6
-0.80
1.0
0.5
0.0
-0.5
-1.00
time (s)
10
15
20
10
15
20
62
Captulo 6
Gnuplot
6.1.
Gnuplot
1
de comandos, no tiene interfaz gr ca . La versi n actual es 4.2 y se encuentra en su p gina
a
o
a
http://www.gnuplot.info. Existen muchos tutoriales al respecto y una p gina con muchos ejemplos
a
de su uso es http://gnuplot.sourceforge.net/demo4.2. Existe tambi n un newsgroup donde se puede
e
solicitar ayuda en comp.graphics.apps.gnuplot. Adem s el programa tiene ayuda interna que se
a
puede consultar con el comando help, como por ejemplo help plot.
6.1.1. Gr cas 2D
a
Para dibujar funciones en 2D basta usar el comando plot seguido de la funci n que se quiere
o
gracar, usando como variable a x, o el nombre del archivo en el cual est n los datos entre comillas
a
() o una sola comilla (),
plot sin(x)
plot "datos.dat"
Se pueden denir variables y funciones:
a=3
plot sin(a*x)
f(x)=sin(a*x)
plot a=1, f(x) title sin(x), a=2, f(x) title sin 2x, a=3, f(x) t sin 3x
1
63
CAPITULO 6. GNUPLOT
64
Para gracar varias funciones en una sola gr ca basta con separar las funciones por comas, como
a
se muestra en el ejemplo. Se pueden tambien poner ttulos con title seguido del nombre entre
comillas. Muchas de las opciones en gnuplot se pueden abreviar y no se debe poner toda la palabra
para que el programa lo interprete. En este caso podemos resumir title con s lo una t.
o
Las funciones las eval a en varios puntos. Para ver como lo hace podemos poner
u
plot sin(x) with points
plot sin(x) w p
set samp 500
set xlabel Eje x
set ylabel Eje y
replot
Podemos establecer el n mero de puntos con set samp y editar los nombres de los ejes con set
u
xlabel y set ylabel. Al editar alg n cambio de formato en la gr ca no debemos escribir de
u
a
nuevo el comando plot con todas las funciones sino que basta con poner replot.
Por default todas las gr cas se muestran en un interfaz gr co, pero quiz requerimos las
a
a
a
gr cas en un archivo para su posterior uso. Para ello debemos establecer la terminal donde se va
a
a imprimir la gr ca y el nombre del archivo que se quiere crear,
a
set term png
set out grafica.png
Para saber que formatos gr cos se pueden utilizar se puede consultar la ayuda interna de set
a
term. Se puede regresar al terminal original usando set term pop.
Tambi n podemos usar la lnea de comandos del bash desde gnuplot sin tener que abrir otra
e
ventanta del terminal usando !. As podemos visualizar las im genes guardadas con
a
!kghostview sin.eps
!ps2pdf sin.eps
!kpdf sin.pdf
Donde kghostview es un programa para visualizaci n de archivos postcript y kpdf para archivos
o
pdf.
del archivo se quieren utilizar. Para dibujar la primera y segunda columna se usa indistintamente,
6.1. GNUPLOT
65
n
Otros estilos de representaci n se pueden consultar con help plot style.
o
Tambi n se pueden especicar los rangos usando:
e
set xrange [3:10]
set xange auto
set yrange [4:10]
6.1.3. Scripts
Si se van a hacer muchas gr cas con un mismo formato se pueden utilizar scripts de manera
a
que no se tenga que volver a escribir todo el formato de la gr ca cada que se quiere gracar. Para
a
ello s lo se tiene que crear un archivo con la terminaci n .gp. Los comandos se escriben uno por
o
o
rengl n para que los pueda interpretar gnuplot. Por ejemplo, si tenemos el archivo sin.gp que
o
contiene una lnea que dice plot sin(x) , basta con escribir en una terminal gnuplot -persist
sin.gp para que se muestre la gr ca en pantalla. El -persist es para que se mantenga la imagen
a
por tiempo indenido y no s lo se muestre y desaparezca.
o
CAPITULO 6. GNUPLOT
66
6.1.4. Gr cas 3D
a
Para gracar en 3D usamos el comando splot en lugar de plot. La segunda variable est dada
a
por y de manera que podemos hacer gr cas como,
a
splot sin(x)*cos(y)
Se puede usar el rat n para rotar la gura y el bot n de enmedio para expandir y contraer la imagen.
o
o
Podemos tener una vista desde arriba con set view map.
Para dibujar datos en 3 dimensiones con colores podemos usar
splot "datos.dat" u 1:2:3:4 pal
Donde la cuarta columna corresponde a pal que es la paleta de colores. Se puede variar la paleta
con set palette.
Tambi n se pueden hacer contornos con
e
set contour surface
set cntrparam levels auto 10
En este ejemplo se puede hacer lo mismo directamente en gnuplot, pero puede ser muy util. Por
ejemplo, supongamos que hay dos archivos, 1.dat y 2.dat, que tienen la misma primera columna,
y queremos dibujar la segunda columna del primer archivo contra la segunda columna del segundo
archivo:
6.1. GNUPLOT
67
A
6.1.6. Gnuplot y LTEX
A
gnuplot tiene la facilidad de mandar las etiquetas de las gr cas a LTEX,
a
6.1.7. Macros
Tambi n se pueden hacer macros con
e
set macros
estilo = "every 5 u 1:10 w lp"
plot "1.dat" @estilo, "2.dat" @estilo
Donde @estilo se reemplaza con el texto denido.