4 de enero de 2012

Gráficas multilineas

Muchas veces queremos graficar mas de una función en el mismo plano para poder realizar comparaciones. Matplotlib nos permite realizar esto de una manera muy sencilla.

Para explicarlo mejor voy a mostrarles el primer código:

import matplotlib.pyplot as plt
import numpy as np

pendientes = [2,4,6]
x = np.arange(-10,10,0.01)

y1 = 2*x + pendientes[0]
y2 = 2*x + pendientes[1]
y3 = 2*x + pendientes[2]

plt.plot(x,y1)
plt.plot(x,y2)
plt.plot(x,y3)
plt.show() 

Podemos ver en este código, la manera en que definí 3 funciones (ecuaciones de recta) similares pero con diferente pendiente (una con 2, otra con 4 y otra con 6). También vemos que gráfique las tres funciones usando el mismo x.

El resultado es el siguiente:

Matplotlib se encarga de asignar un colo diferente a cada gráfica para que podamos diferenciarlas fácilmente.
Aunque el último código es correcto existe una forma mas compacta de realizar la gráfica de varias funciones y es simplemente pasarle todos los argumentos a una sola función plot.

import matplotlib.pyplot as plt
import numpy as np

pendientes = [2,4,6]
x = np.arange(-10,10,0.01)

y1 = 2*x + pendientes[0]
y2 = 2*x + pendientes[1]
y3 = 2*x + pendientes[2]

plt.plot(x,y1,x,y2,x,y3)
plt.show() 

Como vemos el código se redujo a escribir una sola función plot con 6 argumentos ( 1x, 1y, 2x, 2y, 3x, 3y).

Matplotlib pone por defecto en la misma gráfica todas las funciones que le pasemos. Esto se debe a que la propiedad "hold" esta activada por defecto (esto significa que mantiene todas las funciones y las gráfica en un solo plano).

Si queremos obtener gráficas en diferentes ventanas debemos decirle a matplolib que estamos graficando figuras diferentes de la siguiente manera:

import matplotlib.pyplot as plt
import numpy as np

pendientes = [2,4,6]
x = np.arange(-10,10,0.01)

y1 = 2*x + pendientes[0]
y2 = 2*x + pendientes[1]
y3 = 2*x + pendientes[2]

plt.figure(1)
plt.plot(x,y1)

plt.figure(2)
plt.plot(x,y2)

plt.figure(3)
plt.plot(x,y3)

plt.show() 

De esa manera, le decimos al programa explicitamente que queremos que grafique en ventanas diferentes y por lo tanto obtenemos gráficas totalmente distintas.

No hay comentarios:

Publicar un comentario