• No se han encontrado resultados

Pylab con Matplotlib

N/A
N/A
Protected

Academic year: 2022

Share "Pylab con Matplotlib"

Copied!
14
0
0

Texto completo

(1)

Pylab

Matplotlib

(2)

Pylab con Matplotlib

Es una de las mejores y más desarrolladas herramientas para graficar en dos dimensiones. Para usar pylab en el entorno interactivo de Python se usa

ipython -pylab

Para graficar usamos la función plot( ), que recibe como argumento la función a graficar

t=arange(0.0,2.0*pi,0.1) plot(t)

plot(t,t)

plot(sin(t),cos(t))

Para etiquetar los ejes usamos xlabel('abscisas')

ylabel('ordenadas')

(3)

● Título principal de la gráfica title('Gráfica Prueba')

● Hacer un cuadriculado en la gráfica grid(True)

● Al graficar podemos decir si queremos que aparezcan puntos, líneas o triángulos. Para eso usamos 'o', '-', '<' o '>'.

● Especificar los colores que quiero usar.

b blue

g green

r red

c cyan

m magenta

y yellow

k black

w white

(4)

● Podemos especificar el tipo de punto que quiero salga en la gráfica y el tipo de línea.

● Para acortar, puedo hacer combinaciones de figuras y colores

plot(t,3*t,'g:+')

Código de Marca Punto de Gráfica

+ Cruz

. Punto

o Círculo

* Estrellas

p Pentágonos

s Cuadrados

x Taches

D Diamantes

h Hexágonos

^ Triángulos

Código de Línea Estilo de Línea

- Línea Sólida

-- Línea Discontinua

: Línea punteada

-. Línea punteada discontinua

None Ninguna Línea

(5)

import matplotlib.pyplot as plt

radio = [1.0, 2.0, 3.0, 4.0, 5.0, 6.0]

area = [3.14159, 12.56636, 28.27431, 50.26544, 78.53975, 113.09724]

cuadrados = [1.0, 4.0, 9.0, 16.0, 25.0, 36.0]

plt.plot(radio, area, label='Circulos')

plt.plot(radio, cuadrados, marker='o', linestyle='--', color='r', label='Cuadrados')

plt.xlabel('Radios/lados') plt.ylabel('Area')

plt.title('Areas') plt.legend()

plt.show()

(6)

● Hacer 2 funciones en la misma gráfica t=arange(0.0,5.0,0.05)

s1=sin(2*pi*t) s2=s1*exp(-t) plot(t,s1,t,s2)

● En este caso es conveniente agregar una leyenda que nos indique qué gráfica es cual.

legend(('$\sin(2\pi t)$', '$\sin(2\pi

t)e^{t}$'),loc='lower right')

Podemos indicar en donde queremos que

salga la leyenda, usando lower, upper, center,

left y right.

(7)

Diagramas en Polares

z=arange(0.0,2*pi,0.1) r=sin(5*z)

polar(z,r)

theta=arange(0,8*pi,0.1) radio=theta/(8*pi)

polar(theta,radio)

(8)

Subgráficas

La función subplot permite subdividir una ventana de figuras en varias celdas tal que sea posible realizar una representación gráfica distinta en cada una de ellas.

Sintaxis: subplot (m,n,k), donde m,n y k enteros. La ventana de figura será subdividida en mxn celdas, k será el lugar donde pondremos la gráfica. Siempre k>m*n, suponiendo que nos desplazamos por las columnas.

Ejemplo:

subplot(2,2,1)

Habrá 4 figuras en un arreglo de 2x2, Para activar el lugar (1,1) usamos k=1, lugar (1,2) k=2, lugar (2,1) k=3 y lugar (2,2) k=4.

(9)

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)

plot(t1,f(t1),'bo',t2,f(t2),'k') grid(True)

title('Dos subgraficas') ylabel('Amortiguamiento') subplot(212)

plot(t2,cos(2*pi*t2),'r>') grid(True)

xlabel('tiempo (s)')

ylabel('sin amortiguamiento') show()

(10)

● Cicloide

x=r(t-sin(t)) y=r(1-cos(t))

● Astroide

x=r(cos(t))**3 y=r(sin(t))**3

Algunas curvas paramétricas

importantes

(11)

● Hipocicloide

x=(R'-R)cos(t)+Rcos(((R'-R)/R)t) y=(R'-R)sin(t)-Rsin(((R'-R)/R)t)

● Si R'=R y k=R'/R, tenemos

(12)

Histogramas

Para graficar valores discretos o distribuciones estadísticas es útil usar un histograma. También son útiles para graficar una distribución de números que cruzan un rango de posibles valores. Ejemplo: Tomar una lista de números aleatorios y ver cuantas veces de ocurrencia que presentan. Los números aleatorios serán generados con distribuciones gaussianas.

import matplotlib.pyplot as p from random import normal numeros = normal(size=1000) p.hist(numeros)

p.title("Histograma Gaussiano") p.xlabel("Valor")

p.ylabel("Frecuencia") p.show()

(13)

● Nos referimos a "bins" como el número de distintas categorías. El default en python es 10 bins.

● Si queremos cambiar la resolución de nuestra gráfica, es decir, cambiar el número de bins a 20 usamos

p.hist(numeros, bins=20)

Si queremos graficar una distribución de probabilidad en lugar de un conteo de frecuencias, se tendrá que dividir entre una constante de normalización. Por lo general, se quiere que el 100% de probabilidad se encuentre en 1.

p.hist(numeros, bins=20,normed=True)

si queremos cambiar la apariencia del histograma, que los cuadros no estén llenados, sino que sólo se vean los escalones usamos la opción histtype

p.hist(numeros, bins=20,normed=True,histtype='step')

(14)

Hacer un histograma con la distribución gaussiana y una distribución uniforme de números aleatorios desde -3 a 3 en rojo con 50% de transparencia sobre el color azúl de la distribución gaussiana:

import matplotlib.pyplot as plt

from numpy.random import normal, uniform numeros = normal(size=1000)

uniform

es = uniform(low=-3, high=3, size=1000)

plt.hist(numeros, bins=20, histtype='stepfilled', normed=True, color='b', label='Gaussiana')

plt.hist(uniformes, bins=20, histtype='stepfilled', normed=True, color='r', alpha=0.5, label='Uniforme')

plt.title("Histograma Gaussiana/Uniforme") plt.xlabel("Valor")

plt.ylabel("Probabilidad") plt.legend()

plt.savefig('uniforme.jpeg')

Referencias

Documento similar