Trazado de histogramas con Matplotlib

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderemos a trazar histogramas con Matplotlib. Generaremos datos y graficaremos un histograma simple, actualizaremos los colores del histograma, graficaremos un histograma bidimensional y personalizaremos nuestro histograma.

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.

Generar datos y trazar un histograma simple

Para generar un histograma unidimensional, solo necesitamos un solo vector de números. Para un histograma bidimensional, necesitaremos un segundo vector. Generaremos ambos a continuación y mostraremos el histograma para cada vector.

import matplotlib.pyplot as plt
import numpy as np

## Crea un generador de números aleatorios con una semilla fija para la reproducibilidad
rng = np.random.default_rng(19680801)

N_points = 100000
n_bins = 20

## Genera dos distribuciones normales
dist1 = rng.standard_normal(N_points)
dist2 = 0.4 * rng.standard_normal(N_points) + 5

fig, axs = plt.subplots(1, 2, sharey=True, tight_layout=True)

## Podemos establecer el número de bins con el argumento de palabras clave *bins*.
axs[0].hist(dist1, bins=n_bins)
axs[1].hist(dist2, bins=n_bins)

plt.show()

Actualizar los colores del histograma

El método histogram devuelve (entre otras cosas) un objeto patches. Esto nos da acceso a las propiedades de los objetos dibujados. Con esto, podemos editar el histograma según nuestras preferencias. Cambiemos el color de cada barra según su valor y.

## N es la cuenta en cada intervalo, bins es el límite inferior del intervalo
N, bins, patches = axs[0].hist(dist1, bins=n_bins)

## Codificaremos el color por altura, pero podrías usar cualquier escalar
fracs = N / N.max()

## necesitamos normalizar los datos a 0..1 para el rango completo de la mapa de colores
norm = colors.Normalize(fracs.min(), fracs.max())

## Ahora, recorreremos nuestros objetos y estableceremos el color de cada uno en consecuencia
for thisfrac, thispatch in zip(fracs, patches):
    color = plt.cm.viridis(norm(thisfrac))
    thispatch.set_facecolor(color)

## También podemos normalizar nuestras entradas por el número total de conteos
axs[1].hist(dist1, bins=n_bins, density=True)

## Ahora formateamos el eje y para mostrar el porcentaje
axs[1].yaxis.set_major_formatter(PercentFormatter(xmax=1))

plt.show()

Trazar un histograma bidimensional

Para trazar un histograma bidimensional, solo se necesita dos vectores de la misma longitud, correspondientes a cada eje del histograma.

fig, ax = plt.subplots(tight_layout=True)
hist = ax.hist2d(dist1, dist2)

plt.show()

Personalizar su histograma

Personalizar un histograma bidimensional es similar al caso unidimensional, puedes controlar componentes visuales como el tamaño del intervalo o la normalización de colores.

fig, axs = plt.subplots(3, 1, figsize=(5, 15), sharex=True, sharey=True,
                        tight_layout=True)

## Podemos aumentar el número de intervalos en cada eje
axs[0].hist2d(dist1, dist2, bins=40)

## Así como definir la normalización de los colores
axs[1].hist2d(dist1, dist2, bins=40, norm=colors.LogNorm())

## También podemos definir números personalizados de intervalos para cada eje
axs[2].hist2d(dist1, dist2, bins=(80, 10), norm=colors.LogNorm())

plt.show()

Resumen

En este laboratorio, aprendimos cómo trazar histogramas con Matplotlib. Generamos datos y tracamos un histograma simple, actualizamos los colores del histograma, tracamos un histograma bidimensional y personalizamos nuestro histograma. Podemos utilizar estas técnicas para visualizar y analizar datos en una variedad de contextos.