Producir múltiples histogramas con Matplotlib

Beginner

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

Introducción

Los histogramas son una excelente manera de visualizar la distribución de un conjunto de datos, y Matplotlib es una de las bibliotecas de Python más populares para crear visualizaciones de datos. En este laboratorio, usaremos Matplotlib para crear histogramas lado a lado para múltiples conjuntos de datos.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga 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 tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar las bibliotecas necesarias

Primero, necesitamos importar las bibliotecas necesarias para nuestro código. Usaremos Matplotlib y NumPy para nuestros histogramas:

import matplotlib.pyplot as plt
import numpy as np

Crear conjuntos de datos de ejemplo

A continuación, crearemos conjuntos de datos de ejemplo para usar en nuestros histogramas. Crearemos tres conjuntos de datos con 387 puntos de datos cada uno:

np.random.seed(19680801)
number_of_data_points = 387
labels = ["A", "B", "C"]
data_sets = [np.random.normal(0, 1, number_of_data_points),
             np.random.normal(6, 1, number_of_data_points),
             np.random.normal(-3, 1, number_of_data_points)]

Calcular cantidades para la representación gráfica

Antes de poder crear nuestros histogramas, necesitamos calcular algunas cantidades para la representación gráfica. Calcularemos el rango de nuestros conjuntos de datos, los conjuntos de datos agrupados en intervalos, los valores máximos de los intervalos y las ubicaciones en el eje x para cada histograma:

hist_range = (np.min(data_sets), np.max(data_sets))
number_of_bins = 20
binned_data_sets = [
    np.histogram(d, range=hist_range, bins=number_of_bins)[0]
    for d in data_sets
]
binned_maximums = np.max(binned_data_sets, axis=1)
x_locations = np.arange(0, sum(binned_maximums), np.max(binned_maximums))

Representar los histogramas

Ahora que hemos calculado las cantidades necesarias para la representación gráfica, podemos crear nuestros histogramas. Usaremos el método barh para representar barras horizontales para cada histograma:

## Los bordes de los intervalos son los mismos para todos los histogramas
bin_edges = np.linspace(hist_range[0], hist_range[1], number_of_bins + 1)
heights = np.diff(bin_edges)
centers = bin_edges[:-1] + heights / 2

## Recorrer y representar cada histograma
fig, ax = plt.subplots()
for x_loc, binned_data in zip(x_locations, binned_data_sets):
    lefts = x_loc - 0.5 * binned_data
    ax.barh(centers, binned_data, height=heights, left=lefts)

ax.set_xticks(x_locations, labels)
ax.set_ylabel("Valores de datos")
ax.set_xlabel("Conjuntos de datos")

Mostrar los histogramas

Finalmente, podemos mostrar nuestros histogramas usando el método show:

plt.show()

Resumen

En este laboratorio, aprendimos cómo crear histogramas lado a lado para múltiples conjuntos de datos usando Matplotlib. Calculamos las cantidades necesarias para la representación gráfica y usamos el método barh para crear barras horizontales para cada histograma. Con estas habilidades, podemos crear visualizaciones informativas de nuestros datos para obtener información y comunicar nuestros hallazgos a otros.