Diagrammes circulaires imbriqué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

Les diagrammes circulaires sont des outils de visualisation de données populaires utilisés pour représenter des données sous forme circulaire. Cependant, il peut arriver que vous souhaitiez créer une version imbriquée du diagramme circulaire, connue sous le nom de diagramme en cercle tronqué. Ce tutoriel vous guidera tout au long de la création de diagrammes circulaires imbriqués à l'aide de Matplotlib, une bibliothèque de visualisation de données populaire en Python.

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 d'adresses pour accéder au carnet Jupyter pour pratiquer.

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

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

Importez les bibliothèques nécessaires

Tout d'abord, nous devons importer les bibliothèques nécessaires. Dans ce cas, nous avons besoin de Matplotlib et de numpy.

import matplotlib.pyplot as plt
import numpy as np

Créez un diagramme circulaire imbriqué à l'aide de ax.pie

Nous pouvons créer un diagramme circulaire imbriqué à l'aide de la méthode ax.pie. Nous allons tout d'abord générer des données factices, correspondant à trois groupes. Dans le cercle intérieur, nous considérerons chaque nombre comme appartenant à son propre groupe. Dans le cercle extérieur, nous les représenterons comme des membres de leurs 3 groupes originaux.

fig, ax = plt.subplots()

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

ax.set(aspect="equal", title='Pie plot with `ax.pie`')
plt.show()

Créez un diagramme circulaire imbriqué à l'aide de ax.bar

Nous pouvons également créer un diagramme circulaire imbriqué à l'aide de la méthode ax.bar sur des axes avec un système de coordonnées polaires. Cela peut offrir plus de flexibilité dans la conception exacte du tracé.

fig, ax = plt.subplots(subplot_kw=dict(projection="polar"))

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])
## Normalize vals to 2 pi
valsnorm = vals/np.sum(vals)*2*np.pi
## Obtain the ordinates of the bar edges
valsleft = np.cumsum(np.append(0, valsnorm.flatten()[:-1])).reshape(vals.shape)

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

ax.bar(x=valsleft[:, 0],
       width=valsnorm.sum(axis=1), bottom=1-size, height=size,
       color=outer_colors, edgecolor='w', linewidth=1, align="edge")

ax.bar(x=valsleft.flatten(),
       width=valsnorm.flatten(), bottom=1-2*size, height=size,
       color=inner_colors, edgecolor='w', linewidth=1, align="edge")

ax.set(title="Pie plot with `ax.bar` and polar coordinates")
ax.set_axis_off()
plt.show()

Personnaliser le diagramme circulaire imbriqué

Nous pouvons personnaliser le diagramme circulaire imbriqué en changeant les couleurs, en ajoutant des étiquettes et en ajustant la taille.

fig, ax = plt.subplots()

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])

cmap = plt.colormaps["tab20c"]
outer_colors = cmap(np.arange(3)*4)
inner_colors = cmap([1, 2, 5, 6, 9, 10])

## Add labels
labels = ['Group 1', 'Group 2', 'Group 3']
ax.pie(vals.sum(axis=1), radius=1, colors=outer_colors,
       wedgeprops=dict(width=size, edgecolor='w'), labels=labels, labeldistance=0.7)

ax.pie(vals.flatten(), radius=1-size, colors=inner_colors,
       wedgeprops=dict(width=size, edgecolor='w'))

## Set the title
ax.set(aspect="equal", title='Nested Pie Chart')

plt.show()

Enregistrer le diagramme circulaire imbriqué

Nous pouvons enregistrer le diagramme circulaire imbriqué sous forme d'image au format png, pdf ou svg.

fig.savefig('nested_pie_chart.png', dpi=300, bbox_inches='tight')

Sommaire

Dans ce tutoriel, nous avons appris à créer des diagrammes circulaires imbriqués dans Matplotlib en utilisant deux méthodes : ax.pie et ax.bar. Nous avons également appris à personnaliser le diagramme circulaire imbriqué en ajoutant des étiquettes, en changeant les couleurs et en ajustant la taille. Enfin, nous avons vu comment enregistrer le diagramme circulaire imbriqué sous forme d'image au format png, pdf ou svg.