Diagrammes Circulaires Matplotlib

MatplotlibBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à créer et à personnaliser des diagrammes circulaires (pie charts) à l'aide de Matplotlib, l'une des bibliothèques de visualisation de données les plus populaires en Python. Un diagramme circulaire est un graphique statistique circulaire, divisé en secteurs pour illustrer une proportion numérique.

Vous commencerez par préparer les données, puis tracerez un diagramme circulaire de base, et ajouterez progressivement des fonctionnalités telles qu'un effet "explode" (explosion), des étiquettes de pourcentage et une ombre pour rendre le graphique plus informatif et visuellement attrayant.

Toutes les opérations seront effectuées dans le LabEx WebIDE. Vous écrirez du code Python dans un fichier et l'exécuterez pour générer des images de graphiques. Comme l'affichage graphique n'est pas disponible dans cet environnement, vous utiliserez plt.savefig() pour enregistrer vos graphiques sous forme de fichiers image, puis les visualiserez directement dans l'IDE.

Préparer les listes d'étiquettes et de tailles

Dans cette étape, vous allez préparer les données nécessaires pour tracer un diagramme circulaire. Un diagramme circulaire nécessite deux ensembles de données principaux : les labels pour chaque secteur et la taille ou la valeur correspondante de chaque secteur.

Tout d'abord, créons un script Python. Dans l'explorateur de fichiers du WebIDE sur la gauche, vous verrez un fichier nommé main.py dans le répertoire project. Double-cliquez dessus pour l'ouvrir dans l'éditeur.

Ajoutez maintenant le code suivant à main.py. Ce code définit deux listes Python : labels pour les catégories et sizes pour leurs proportions respectives.

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
  • labels : Une liste de chaînes de caractères qui seront utilisées pour étiqueter chaque secteur du diagramme circulaire.
  • sizes : Une liste de nombres représentant la valeur ou la proportion de chaque secteur. La somme de ces valeurs représentera le cercle entier.

Après avoir ajouté le code, votre fichier main.py devrait ressembler à ceci. Ce script ne produit encore aucun résultat, mais il configure les données nécessaires pour les étapes suivantes.

Tracer le diagramme circulaire avec plt.pie(sizes, labels=labels)

Dans cette étape, vous utiliserez les données de l'étape précédente pour tracer un diagramme circulaire de base. Nous utiliserons la fonction plt.pie() de la bibliothèque Matplotlib.

Tout d'abord, vous devez importer le module matplotlib.pyplot, qui est conventionnellement importé avec l'alias plt. Ensuite, vous pouvez appeler la fonction plt.pie(), en passant vos listes sizes et labels comme arguments.

Comme nous ne pouvons pas afficher de fenêtre d'interface graphique dans cet environnement, nous enregistrerons le graphique dans un fichier image à l'aide de plt.savefig().

Mettez à jour votre fichier main.py avec le code suivant :

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart
ax.pie(sizes, labels=labels)

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart.png')

print("Pie chart saved to pie_chart.png")

Maintenant, exécutons le script. Ouvrez un terminal dans le WebIDE (vous pouvez utiliser l'icône + dans le panneau du terminal ou le menu Terminal > New Terminal) et exécutez la commande suivante :

python3 main.py

Vous devriez voir la sortie suivante dans le terminal :

Pie chart saved to pie_chart.png

Un nouveau fichier nommé pie_chart.png apparaîtra dans votre répertoire project. Double-cliquez sur pie_chart.png dans l'explorateur de fichiers pour l'ouvrir et visualiser votre premier diagramme circulaire.

Pie chart

Ajouter un effet d'explosion avec le paramètre explode

Dans cette étape, vous apprendrez comment mettre en évidence une tranche particulière du diagramme circulaire en l'"explosant". Cela signifie la décaler légèrement du centre du cercle. Ceci est réalisé en utilisant le paramètre explode dans la fonction pie().

Le paramètre explode prend un tuple ou une liste de la même longueur que vos données sizes. Chaque valeur dans le tuple spécifie la fraction du rayon avec laquelle décaler chaque secteur. Une valeur de 0 signifie que la tranche reste en place, tandis qu'une valeur non nulle comme 0.1 la fera sortir.

Modifions main.py pour faire exploser la tranche 'Hogs'. Nous enregistrerons également la sortie dans un nouveau fichier, pie_chart_explode.png, pour la comparer avec la précédente.

Mettez à jour votre fichier main.py avec le code suivant :

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart with explode effect
ax.pie(sizes, explode=explode, labels=labels)

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_explode.png')

print("Pie chart with explode effect saved to pie_chart_explode.png")

Maintenant, exécutez le script mis à jour depuis le terminal :

python3 main.py

Vous verrez cette sortie :

Pie chart with explode effect saved to pie_chart_explode.png

Un nouveau fichier pie_chart_explode.png se trouve maintenant dans votre répertoire de projet. Ouvrez-le pour voir la tranche 'Hogs' légèrement séparée du reste du diagramme.

Pie chart with explode effect

Afficher les pourcentages avec autopct='%1.1f%%'

Dans cette étape, vous ajouterez des étiquettes de pourcentage à chaque tranche pour rendre le graphique plus informatif. Cela peut être fait en utilisant le paramètre autopct.

Le paramètre autopct accepte une chaîne de format qui détermine comment la valeur en pourcentage de chaque tranche est affichée. Par exemple, '%1.1f%%' formatera le nombre comme un nombre à virgule flottante avec une décimale, suivi d'un signe de pourcentage. Le %% à la fin est nécessaire pour afficher un symbole % littéral.

Mettons à jour main.py pour inclure les pourcentages. Nous enregistrerons le résultat dans pie_chart_percent.png.

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the pie chart with explode and percentage
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%')

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_percent.png')

print("Pie chart with percentages saved to pie_chart_percent.png")

Exécutez à nouveau le script depuis votre terminal :

python3 main.py

La sortie sera :

Pie chart with percentages saved to pie_chart_percent.png

Maintenant, ouvrez pie_chart_percent.png depuis l'explorateur de fichiers. Vous verrez que chaque tranche affiche désormais sa valeur en pourcentage.

Pie chart with percentages

Définir l'ombre avec shadow=True

Dans cette dernière étape, vous ajouterez une ombre au diagramme circulaire pour lui donner un aspect légèrement tridimensionnel. Ceci est facilement réalisable en définissant le paramètre shadow sur True.

Combinons toutes les fonctionnalités que nous avons apprises : explode, autopct et shadow. Nous enregistrerons le graphique final sous le nom pie_chart_final.png.

Mettez à jour votre fichier main.py avec le code complet :

import matplotlib.pyplot as plt

## Data for the pie chart
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)  ## only "explode" the 2nd slice (i.e. 'Hogs')

## Create a figure and a set of subplots
fig, ax = plt.subplots()

## Plot the final pie chart with all features
ax.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
        shadow=True, startangle=90)

## Equal aspect ratio ensures that pie is drawn as a circle.
ax.axis('equal')

## Save the figure to a file
plt.savefig('/home/labex/project/pie_chart_final.png')

print("Final pie chart saved to pie_chart_final.png")

Dans cette version finale, nous avons également ajouté startangle=90 pour faire pivoter le point de départ du diagramme circulaire de 90 degrés dans le sens inverse des aiguilles d'une montre, et ax.axis('equal') pour garantir que le diagramme circulaire est dessiné comme un cercle parfait.

Exécutez le script une dernière fois :

python3 main.py

La sortie sera :

Final pie chart saved to pie_chart_final.png

Ouvrez pie_chart_final.png pour voir votre diagramme circulaire complet et entièrement fonctionnel, avec une tranche éclatée, des étiquettes de pourcentage et une ombre.

Final pie chart

Résumé

Félicitations pour avoir terminé le laboratoire ! Vous avez appris avec succès à créer et à personnaliser des diagrammes circulaires à l'aide de Matplotlib en Python.

Dans ce laboratoire, vous avez appris à :

  • Préparer les données (étiquettes et tailles) pour un diagramme circulaire.
  • Tracer un diagramme circulaire de base en utilisant plt.pie().
  • Enregistrer un graphique Matplotlib dans un fichier image en utilisant plt.savefig().
  • Mettre en évidence une tranche en utilisant le paramètre explode.
  • Afficher les valeurs en pourcentage sur les tranches en utilisant le paramètre autopct.
  • Ajouter un effet visuel 3D avec le paramètre shadow=True.

Vous possédez désormais les compétences fondamentales pour créer des diagrammes circulaires informatifs et visuellement attrayants pour vos projets de visualisation de données.