3 de enero de 2012

Primer gráfica con Matplotlib

Una de las grandes ventajas de matplotlib es la facilidad con la que podemos comenzar a realizar gráficas.
La gráfica mas sencilla que podemos realizar es la siguiente:

import matplotlib.pypĺot as plt
plt.plot([3,5,1,6,2])
plt.show()

Con este código obtenemos la siguiente gráfica:


La primera linea importa el sub-modulo pyplot que pertenece a matplotlib y aunque este contiene todas las funciones necesarias para realizar nuestras gráficas no es el único sub-modulo que tiene matplotlib, pero esto lo explicare mas adelante. Luego de importar el modulo le asigno el identificador "plt".

La segunda linea "plt.plot([3,5,1,6,2])" le indica al interprete de Python, que quiero graficar esa lista de valores. Normalmente todas las gráficas contienen mínimo dos conjuntos de valores, uno para el eje X y otro para el eje Y, pero como podemos ver en este ejemplo solo le pasamos una lista. En este caso como solo tiene un único conjunto de valores, la función gráfica el valor con respecto a su posición en la lista. Es decir, que el item con indice 0 en la lista tiene un valor de 3 mientras que el item 1 tiene un valor de 5.

Por ultimo, le decimos a Python que nos muestre la gráfica que acabamos de crear. Este paso puede parecer que no es necesario pero nos daremos cuenta de su utilidad cuando queramos mostrar mas de una función en la misma gráfica.

Ahora vamos a hacer una gráfica asignándole los valores tanto de X como de Y. Primero una sencilla:
  
import matplotlib.pyplot as plt

x = range(10)
y = range(10)

plt.plot(x,y)
plt.show() 
En la anterior gráfica usamos una función propia de Python llamada "range()" con la cual generamos una lista de número enteros. En este ejemplo "x = range(10)" x es una lista de enteros que va desde 0 hasta 9. La función range también permite especificar desde comienza la secuencia y hasta donde termina ademas de poder decidir la distancia entre cada termino (de dos en dos, de tres en tres, etc...).

El siguiente código se vuelve un poco mas complejo:

import matplotlib.pyplot as plt

x = range(0,10,2)
y = [Xn**2 for Xn in x]

plt.plot(x,y)
plt.show()

En este nuevo código cambian solamente dos cosas. La definición de x y la definición de y.
x usa la función "range" de una manera mas elaborada especificando el inicio, el fin, y la distancia entre terminos. En este caso x comenzara en 0 y avanzara en pasos de a 2 hasta llegar a 10 (sin incluirlo).

Para crear y usamos una herramienta Python llamada listas por comprensión. Si tratara de leer esa linea seria algo como: "a cada Xn de la lista x sacarle su cuadrado y guardarlo en la lista y". Las listas por comprensión son una manera muy practica de generar listas a partir de otras.

Este es el resultado del código:

La gráfica esta bien pero tiene un problema y es que tiene muy pocas muestras y por lo tanto no se ve como una curva sino como varias rectas unidas. Aquí es donde podemos hacer uso de numpy y su función "arange".
arange es muy parecida a range con la diferencia de que podemos especificar pasos mas pequeños. Esto quiere decir que en vez de aumentar de 1 en 1, ó 2 en 2 como hacemos con range, podemos aumentar de 0.01 o 0.5, etc.

Este el nuevo código haciendo uso de arange:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,10,0.01)
y = [Xn**2 for Xn in x] 

plt.plot(x,y)
plt.show() 

De esta manera obtenemos una gráfica mas definida al contar con un mayor número de muestras.


5 comentarios:

  1. me salvo la VIDA
    chechito

    ResponderEliminar
  2. BUenas quisisera empezar con python para dejar matlab q ide se recomienda???

    ResponderEliminar
  3. El IDE recomendado para trabajar con Python en entornos cientificos es Spyder (personalmente no me gusta mucho). Yo uso WingIDE la única desventaja es que es propietario. Próximamente haré una entrada con reviews de IDEs para Python. Saludos.

    ResponderEliminar
  4. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  5. Notableeeee por ti pasare el ramo :D

    ResponderEliminar