Construyendo histogramas con Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

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.