Diagramas de barras etiquetados 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 tutorial, aprenderemos cómo usar la función auxiliar bar_label en Matplotlib para crear diagramas de barras con etiquetas. Cubriremos varios escenarios, como etiquetar diagramas de barras horizontales y verticales, usar diferentes formatos de etiqueta y personalizar la apariencia de las etiquetas.

Consejos sobre la VM

Una vez que se haya iniciado 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 bibliotecas

Primero, necesitamos importar las bibliotecas necesarias, incluyendo numpy y matplotlib. También usaremos el módulo random de numpy para generar algunos datos aleatorios.

import matplotlib.pyplot as plt
import numpy as np

## Fijando el estado aleatorio para la reproducibilidad
np.random.seed(19680801)

Etiquetado de diagramas de barras verticales

Comenzaremos creando un diagrama de barras verticales y etiquetándolo utilizando la función bar_label. Los datos que utilizaremos son la cantidad de pingüinos por sexo, tomados de https://allisonhorst.github.io/palmerpenguins/.

species = ('Adelie', 'Chinstrap', 'Gentoo')
sex_counts = {
    'Male': np.array([73, 34, 61]),
    'Female': np.array([73, 34, 58]),
}
width = 0.6  ## el ancho de las barras: también puede ser una secuencia de len(x)

fig, ax = plt.subplots()
bottom = np.zeros(3)

for sex, sex_count in sex_counts.items():
    p = ax.bar(species, sex_count, width, label=sex, bottom=bottom)
    bottom += sex_count

    ax.bar_label(p, label_type='center')

ax.set_title('Number of penguins by sex')
ax.legend()

plt.show()

Etiquetado de diagramas de barras horizontales

A continuación, crearemos un diagrama de barras horizontales y lo etiquetaremos utilizando la función bar_label. Utilizaremos los datos del paso anterior, pero esta vez generaremos algunos datos de rendimiento aleatorios para cada persona.

people = ('Tom', 'Dick', 'Harry', 'Slim', 'Jim')
y_pos = np.arange(len(people))
performance = 3 + 10 * np.random.rand(len(people))
error = np.random.rand(len(people))

fig, ax = plt.subplots()

hbars = ax.barh(y_pos, performance, xerr=error, align='center')
ax.set_yticks(y_pos, labels=people)
ax.invert_yaxis()  ## etiquetas leídas de arriba hacia abajo
ax.set_xlabel('Performance')
ax.set_title('How fast do you want to go today?')

## Etiquetar con floats con formato especial
ax.bar_label(hbars, fmt='%.2f')
ax.set_xlim(right=15)  ## ajustar xlim para ajustar las etiquetas

plt.show()

Etiquetado avanzado de barras

En este paso, mostraremos algunas cosas más avanzadas que se pueden hacer con las etiquetas de barras. Usaremos el mismo diagrama de barras horizontal que en el paso anterior.

fig, ax = plt.subplots()

hbars = ax.barh(y_pos, performance, xerr=error, align='center')
ax.set_yticks(y_pos, labels=people)
ax.invert_yaxis()  ## etiquetas leídas de arriba hacia abajo
ax.set_xlabel('Performance')
ax.set_title('How fast do you want to go today?')

## Etiquetar con leyendas dadas, relleno personalizado y opciones de anotación
ax.bar_label(hbars, labels=[f'±{e:.2f}' for e in error],
             padding=8, color='b', fontsize=14)
ax.set_xlim(right=16)

plt.show()

Etiquetado de barras usando una cadena de formato con {}

En este paso, mostraremos cómo usar una cadena de formato con {} para formatear las etiquetas de barras. Usaremos algunos datos sobre las ventas de helado por sabor.

fruit_names = ['Coffee', 'Salted Caramel', 'Pistachio']
fruit_counts = [4000, 2000, 7000]

fig, ax = plt.subplots()
bar_container = ax.bar(fruit_names, fruit_counts)
ax.set(ylabel='pints sold', title='Gelato sales by flavor', ylim=(0, 8000))
ax.bar_label(bar_container, fmt='{:,.0f}')

Etiquetado de barras usando una función llamada

Finalmente, mostraremos cómo usar una función llamada para formatear las etiquetas de barras. Usaremos algunos datos sobre las velocidades de diferentes animales al correr.

animal_names = ['Lion', 'Gazelle', 'Cheetah']
mph_speed = [50, 60, 75]

fig, ax = plt.subplots()
bar_container = ax.bar(animal_names, mph_speed)
ax.set(ylabel='speed in MPH', title='Running speeds', ylim=(0, 80))
ax.bar_label(bar_container, fmt=lambda x: f'{x * 1.61:.1f} km/h')

Resumen

En este tutorial, aprendimos cómo usar la función auxiliar bar_label en Matplotlib para crear diagramas de barras etiquetados. Cubrimos varios escenarios, como etiquetar diagramas de barras horizontales y verticales, usar diferentes formatos de etiqueta y personalizar la apariencia de las etiquetas.