Introducción
En este laboratorio, aprenderemos a usar Matplotlib para crear histogramas utilizando rectángulos y PolyCollections. Usaremos numpy para generar datos aleatorios y luego usaremos Matplotlib para visualizar los datos como un histograma. Este laboratorio asume que tienes un conocimiento básico de Python y Matplotlib.
Consejos sobre la VM
Una vez que se haya iniciado la VM, haz clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.
A veces, es posible que tengas que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.
Si tienes problemas durante el aprendizaje, no dudes en preguntar a Labby. Proporciona retroalimentación después de la sesión y resolveremos el problema para ti de inmediato.
Importar las bibliotecas necesarias
Antes de comenzar, necesitamos importar las bibliotecas necesarias. En este laboratorio usaremos Matplotlib y numpy. Abre un nuevo archivo de Python y agrega el siguiente código:
import matplotlib.pyplot as plt
import numpy as np
Establecer la semilla aleatoria y generar datos
Usaremos numpy para generar datos aleatorios. Para que nuestros resultados sean reproducibles, estableceremos una semilla aleatoria. Agrega el siguiente código a tu archivo:
np.random.seed(19680801)
data = np.random.randn(1000)
Generar los datos del histograma
Ahora que tenemos nuestros datos aleatorios, podemos generar un histograma usando numpy. Usaremos 50 intervalos para crear nuestro histograma. Agrega el siguiente código:
n, bins = np.histogram(data, 50)
Generar las esquinas de los rectángulos
Para dibujar nuestro histograma usando rectángulos, necesitamos calcular las esquinas de cada rectángulo. Agrega el siguiente código:
left = bins[:-1]
right = bins[1:]
bottom = np.zeros(len(left))
top = bottom + n
Generar el objeto Path y crear un recuadro a partir de él
A continuación, generaremos un objeto Path y crearemos un recuadro a partir de él. Usaremos el objeto Path para dibujar nuestro histograma usando rectángulos. Agrega el siguiente código:
XY = np.array([[left, left, right, right], [bottom, top, top, bottom]]).T
barpath = path.Path.make_compound_path_from_polys(XY)
patch = patches.PathPatch(barpath)
patch.sticky_edges.y[:] = [0]
axs[0].add_patch(patch)
axs[0].autoscale_view()
Dibujar el histograma usando una PathCollection
En lugar de usar muchas instancias de Rectangle, podemos usar un método más rápido para dibujar nuestro histograma usando una PathCollection. Crearemos un camino compuesto directamente usando vértices y códigos. Agrega el siguiente código:
nrects = len(left)
nverts = nrects*(1+3+1)
verts = np.zeros((nverts, 2))
codes = np.ones(nverts, int) * path.Path.LINETO
codes[0::5] = path.Path.MOVETO
codes[4::5] = path.Path.CLOSEPOLY
verts[0::5, 0] = left
verts[0::5, 1] = bottom
verts[1::5, 0] = left
verts[1::5, 1] = top
verts[2::5, 0] = right
verts[2::5, 1] = top
verts[3::5, 0] = right
verts[3::5, 1] = bottom
barpath = path.Path(verts, codes)
patch = patches.PathPatch(barpath)
patch.sticky_edges.y[:] = [0]
axs[1].add_patch(patch)
axs[1].autoscale_view()
Mostrar el histograma
Finalmente, podemos mostrar nuestro histograma usando Matplotlib. Agrega el siguiente código a tu archivo:
plt.show()
Resumen
En este laboratorio, aprendimos cómo usar Matplotlib para construir histogramas usando rectángulos y PolyCollections. Usamos numpy para generar datos aleatorios y luego usamos Matplotlib para visualizar los datos como un histograma. También aprendimos cómo dibujar histogramas usando una PathCollection, que es un método más rápido que usar muchas instancias de Rectangle.