24 - Python, Graficando (1)
-
Upload
freddy-quinn -
Category
Documents
-
view
116 -
download
6
Transcript of 24 - Python, Graficando (1)
-
Python
ING1310 Introduccion a la Computacion
Python
Graficando
Matas Recabarren - Andres [email protected] - [email protected]
Universidad de Los Andes
27/octubre/2010
Rev : 110
Clase 24 1 / 23
-
Python
En esta clase
1 matplotlibMultiples FigurasInformacion Adicional
2 Ejercicios
Clase 24 2 / 23
-
Python
matplotlib
matplotlib
Clase 24 3 / 23
-
Python
matplotlib
Introduccion
matplotlib es un modulo que agrega funcionalidades para graficaren python El modulo en python se llama pyplot
Crea una ventana por cada grafico que realicemos Cada ventana se conoce como figure
Existe un metodo show el cual se debe llamar una sola vez, cuando yaestan listos todos los graficos. Este metodo muestra las ventanas.
Clase 24 4 / 23
-
Python
matplotlib
Funcion plot
Es la funcion basica para graficar.
Su funcionamiento dependera de los parametros que se le entreguen: plot(y) el arreglo recibido lo considera como el eje Y, el eje X es el
ndice en el arreglo. plot(x, y) grafica linealmente entre los puntos x, y obtenidos de
los dos arreglos. plot(x, y, f) el parametro f indica el formato del grafico,
definido por el color y el estilo:
b- valor por defecto, azul y lnea entre los puntos (continuo) g verde y lnea punteada entre los puntos ro rojo y un crculo en cada punto ks negro y cuadrado en cada punto m morado y triangulo en cada punto
Ademas se pueden combinar los estilos, i.e. go
Clase 24 5 / 23
-
Python
matplotlib
from numpy import *
import matplotlib.pyplot as plt
y = array([1, 2, -1, 5, 2, 0, 3])
x = array([-1, 0.5, 3, 5, 6, 6.5, 6.9])
plt.plot(x, y, ro --)
plt.show()
Clase 24 6 / 23
-
Python
matplotlib
Por cada llamada a plot se agrega un nuevo conjunto al mismografico
Ejemplo: Multiples resultados en un mismo grafico
from numpy import *
import matplotlib.pyplot as plt
t = linspace (0, 10, 40)
y = sin(t)
plt.plot(t, y) # graficar seno
plt.plot(t, cos(t)) # graficar coseno
plt.show() # mostrar
Clase 24 7 / 23
-
Python
matplotlib
Configuracion de Ejes
Es posible modificar la configuracion de los ejes axis([xmin, xmax, ymin, ymax]) modifica los valores maximos
y mnimos de cada eje. xlabel/ylabel(l) recibe un nombre con el ttulo para el eje. title(t) define el ttulo del grafico. legend() agrega una leyenda al grafico (se debe poner un label al
grafico)
Clase 24 8 / 23
-
Python
matplotlib
Ejemplo: Grafico con configuracion de ejes
from numpy import *
import matplotlib.pyplot as plt
t = linspace (0, 10, 40)
y = sin(t)
plt.plot(t, y, label="sin(t)") # graficar seno
plt.axis([-1, 11, -1.5, 1.5])
plt.xlabel(tiempo )
plt.ylabel(seno)
plt.title(Seno en el tiempo )
plt.legend ()
plt.show()
Clase 24 9 / 23
-
Python
matplotlib
Histogramas
matplotlib provee una funcion especial para graficar histogramas. La funcion hist recibe al menos el arreglo con los valores y lacantidad de bins Los bins son las agrupaciones para el histograma.
Ejemplo: Mostrar histogramas
from numpy import *
import matplotlib.pyplot as plt
# Genera un arreglo de 1000 valores aleatorios con
# distribucion normal de media 0 y phi 5
y = random.normal(0, 5, 1000)
plt.hist(y, 20)
plt.plot ([-20,20],[ len(y)/20,len(y)/20], r-)
plt.show()
Clase 24 10 / 23
-
Python
matplotlib
Multiples Figuras
matplotlib
Multiples Figuras
Clase 24 11 / 23
-
Python
matplotlib
Multiples Figuras
Que pasa si quiero hacer dos graficos en un mismo
programa?
Por defecto se crea una figura donde se dibujan todos los graficos
Para graficos separados se deben crear las figuras de forma explcita A traves de la funcion figure(n), donde n es el numero unico que
identifica a esa figura.
Clase 24 12 / 23
-
Python
matplotlib
Multiples Figuras
Ejemplo: Multiples figuras
from numpy import *
import matplotlib.pyplot as plt
t = linspace (0, 10, 40)
y = 10* sin(t)
plt.plot(t, y)
plt.figure (2) # nueva figura
y = random.normal(0, 5, 1000)
plt.hist(y, 20)
plt.show()
Clase 24 13 / 23
-
Python
matplotlib
Multiples Figuras
Subplots
Tambien es posible poner varios graficos separados en una mismafigura Se realizan a traves de la funcion subplot Recibe tres parametros, la cantidad de filas, la cantidad de columnas, y
la posicion donde graficar Las posiciones comienzan en 1 y se mueven de izquierda a derecha y de
arriba a abajo
Clase 24 14 / 23
-
Python
matplotlib
Multiples Figuras
Ejemplo: Multiples graficos en una figura
from numpy import *
import matplotlib.pyplot as plt
y = array([1, 2, -1, 5, 2, 0, 3])
x = array([-1, 0.5, 3, 5, 6, 6.5, 6.9])
plt.figure (1)
plt.subplot(2, 1, 1)
plt.plot(x, y, ro --)
plt.axis([-7, 7, -6, 6])
plt.subplot(2, 1, 2)
plt.plot(y)
plt.show()
Clase 24 15 / 23
-
Python
matplotlib
Informacion Adicional
matplotlib
Informacion Adicional
Clase 24 16 / 23
-
Python
matplotlib
Informacion Adicional
Texto
Podemos agregar texto donde queramos a nuestros graficos
Utilizamos la funcion text que recibe al menos 3 parametros: La posicion (x, y) segun el valor de los ejes El texto que se quiere mostrar
Clase 24 17 / 23
-
Python
matplotlib
Informacion Adicional
Ejemplo: Texto en grafico
from numpy import *
import matplotlib.pyplot as plt
y = random.normal(0, 5, 1000)
plt.hist(y, 20)
# Muestra una grilla
plt.grid(True)
# Los signos peso hacen que se procese el texto
plt.text(-10, 100, r = 0, = 5)
plt.show()
Clase 24 18 / 23
-
Python
matplotlib
Informacion Adicional
Anotaciones sobre los graficos
Mediante al funcion annotate uno puede agregar informacion sobrealgun punto del gafico en particular.
Recibe el texto que se quiere mostrar, as como otros parametros: xy posicion que se quiere destacar xytext posicion donde poner el texto arrowprops propiedades de la flecha entre el texto y el punto
destacado
facecolor color de la flecha shrink porcentaje de separacion entre la flecha, el texto y el punto frac fraccion de la flecha utilizada por la cabeza headwidth ancho de la cabeza
Clase 24 19 / 23
-
Python
matplotlib
Informacion Adicional
Ejemplo: Anotaciones en grafico
from numpy import *
import matplotlib.pyplot as plt
x = arange (0.0, 5.0, 0.01)
s = cos (2*pi*x)
plt.plot(x, s)
plt.annotate(maximo local,xy=(2, 1),xytext =(3 ,1.5),
arrowprops=dict(facecolor=black,shrink =0.05, frac
=0.2))
plt.ylim(-2, 2)
plt.show()
Clase 24 20 / 23
-
Python
matplotlib
Informacion Adicional
Mas?
Se puede hacer muchsimo mas.Pueden ver todas las funciones en:http://matplotlib.sourceforge.net/
Clase 24 21 / 23
-
Ejemplo: Mas?from numpy import *
import matplotlib.pyplot as plt
# Creamos un arreglo de valores entre 0 y 1 que seran el rho
r = arange(0, 1, 0.001)
# Creamos un arreglo de valores angulares
theta = 8*pi*r
# Graficamos valores angulares como X, y valores entre 0 y 1 como Y
# grafico en coordenadas polares
plt.polar(theta , r, color=#ee8d18 , lw=3)
# Definimos un punto entre los graficados
ind = 800
# Obtenemos el r y el thetha para ese punto
thisr , thistheta = r[ind], theta[ind]
# Graficamos un circulo en ese punto
plt.plot([ thistheta], [thisr], o)
# Agregamos una nota al punto
plt.annotate(anotacion polar ,
xy=(thistheta , thisr),
xytext =(0.05 , 0.05) ,
textcoords=figure fraction ,
arrowprops=dict(facecolor=black , shrink =0.05) ,
horizontalalignment =left,
verticalalignment=bottom )
plt.show()
-
Python
Ejercicios
Ejercicios
Clase 24 23 / 23
-
Python
Ejercicios
Ejercicio Python: Histogramas
Implemente una funcion que muestre en una sola figura una serie de his-togramas de valores aleatorios que siguen una distribucion normal. Para ellosu funcion debe recibir 4 parametros:
El valor del para la distribucion normal ( = 0)
La cantidad de histogramas a realizar
La cantidad de muestras por cada histograma
La cantidad de bins para cada histograma
Clase 24 24 / 23
-
Ejemplo: Solucion - Histogramasfrom numpy import *
import pylab as plt
def normalHist(sigma , cantHist , cantSamples , cantBins):
n = random.normal(0, sigma , (cantHist , cantSamples))
plt.figure (1)
for i in range(len(n)):
plt.subplot(cantHist , 1, i+1)
plt.hist(n[i], cantBins)
plt.show()
s = input("Ingrese el valor de sigma: ")
s = float(s)
normalHist(s, 4, 5000, 60)
matplotlibMltiples FigurasInformacin Adicional
Ejercicios