Diagrammes en barres étiquetés avec Matplotlib

PythonPythonBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce tutoriel, nous allons apprendre à utiliser la fonction d'aide bar_label dans Matplotlib pour créer des diagrammes en barres étiquetés. Nous aborderons diverses situations telles que l'étiquetage des diagrammes en barres horizontales et verticales, l'utilisation de différents formats d'étiquette et la personnalisation de l'apparence des étiquettes.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.

Importation des bibliothèques

Tout d'abord, nous devons importer les bibliothèques nécessaires, y compris numpy et matplotlib. Nous utiliserons également le module random de numpy pour générer des données aléatoires.

import matplotlib.pyplot as plt
import numpy as np

## Fixing random state for reproducibility
np.random.seed(19680801)

Étiquetage des diagrammes en barres verticales

Nous commencerons par créer un diagramme en barres verticales et l'étiqueter à l'aide de la fonction bar_label. Les données que nous utiliserons sont le nombre de pingouins par sexe, issues 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  ## la largeur des barres : peut également être une séquence de longueur 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('Nombre de pingouins par sexe')
ax.legend()

plt.show()

Étiquetage des diagrammes en barres horizontales

Ensuite, nous allons créer un diagramme en barres horizontales et l'étiqueter à l'aide de la fonction bar_label. Nous utiliserons les données de l'étape précédente, mais cette fois-ci, nous allons générer des données de performance aléatoires pour chaque personne.

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()  ## les étiquettes sont lues de haut en bas
ax.set_xlabel('Performance')
ax.set_title('Combien vite voulez-vous aller aujourd\'hui?')

## Étiquette avec des flottants formattés spécialement
ax.bar_label(hbars, fmt='%.2f')
ax.set_xlim(right=15)  ## ajuster la limite x pour adapter les étiquettes

plt.show()

Étiquetage avancé des barres

Dans cette étape, nous allons montrer quelques choses plus avancées que l'on peut faire avec les étiquettes des barres. Nous utiliserons le même diagramme en barres horizontales que dans l'étape précédente.

fig, ax = plt.subplots()

hbars = ax.barh(y_pos, performance, xerr=error, align='center')
ax.set_yticks(y_pos, labels=people)
ax.invert_yaxis()  ## les étiquettes sont lues de haut en bas
ax.set_xlabel('Performance')
ax.set_title('Combien vite voulez-vous aller aujourd\'hui?')

## Étiquette avec des légendes données, un rembourrage personnalisé et des options d'annotation
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()

Étiquetage des barres en utilisant une chaîne de formatage au style {}

Dans cette étape, nous allons montrer comment utiliser une chaîne de formatage au style {} pour formater les étiquettes des barres. Nous utiliserons certaines données sur les ventes de glace par saveur.

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}')

Étiquetage des barres en utilisant une fonction appelable

Enfin, nous allons montrer comment utiliser une fonction appelable pour formater les étiquettes des barres. Nous utiliserons certaines données sur les vitesses de course de différents animaux.

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='vitesse en mph', title='Vitesses de course', ylim=(0, 80))
ax.bar_label(bar_container, fmt=lambda x: f'{x * 1.61:.1f} km/h')

Sommaire

Dans ce tutoriel, nous avons appris à utiliser la fonction d'aide bar_label dans Matplotlib pour créer des diagrammes en barres étiquetés. Nous avons abordé divers scénarios tels que l'étiquetage des diagrammes en barres horizontales et verticales, l'utilisation de différents formats d'étiquette et la personnalisation de l'apparence des étiquettes.