24 - python, graficando

25
Python ING1310 – Introducci´ on a la Computaci´ on Python Graficando Mat´ ıas Recabarren - Andr´ es Moreno [email protected] - [email protected] Universidad de Los Andes 27/octubre/2010 Rev : 110 Clase 24 1 / 23

Upload: feliciano-quintana-oliver

Post on 24-Nov-2015

50 views

Category:

Documents


4 download

TRANSCRIPT

  • 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