Fonction pie() de Matplotlib
Documentation de référence de Matplotlib
pie()Utilisé pour dessiner des diagrammes circulaires, montrant la relation proportionnelle de chaque partie par rapport au tout.
Les diagrammes circulaires conviennent pour afficher les proportions d’un petit nombre de catégories (généralement entre 5 et 8).
Définition de fonction
Interface pyplot
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None,
autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1,
startangle=0, radius=1, counterclock=True, wedgeprops=None,
textprops=None, center=(0, 0), frame=False, rotatelabels=False, *,
normalize=True, hatch=None, **kwargs)
Interface Axes
Axes.pie(x, explode=None, labels=None, colors=None, autopct=None,
pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0,
radius=1, counterclock=True, wedgeprops=None, textprops=None,
center=(0, 0), frame=False, rotatelabels=False, *,
normalize=True, hatch=None, **kwargs)
Description du paramètre
| Paramètre | Type | Description |
|---|---|---|
| x | Tableau 1D de type array-like | La valeur de chaque secteur (obligatoire), normalisée automatiquement. |
| explode | de type tableau | La distance dont chaque secteur est décalé par rapport au centre ; 0 signifie aucun décalage. |
| labels | liste | Texte d’étiquette pour chaque secteur. |
| colors | liste | Couleur de chaque secteur. |
| autopct | str ou callable | Affiche automatiquement les pourcentages, par ex. '%1.1f%%' signifie une décimale ; None le masque. |
| pctdistance | float | Rapport de distance du texte de pourcentage par rapport au centre, par défaut 0,6. |
| shadow | bool | Indique s'il faut ajouter un effet d'ombre. |
| labeldistance | float | Rapport de distance des étiquettes par rapport au centre, par défaut 1.1. |
| startangle | float | Angle de départ du premier secteur (sens antihoraire) ; 0 signifie partir de la direction de 3 heures. |
| radius | float | Rayon du diagramme circulaire, par défaut 1. |
| counterclock | bool | Sens des secteurs : True correspond au sens antihoraire (par défaut), False au sens horaire. |
| wedgeprops | dict | Paramètres passés à chaque secteur (Wedge), par exemple, {'edgecolor':'white', 'linewidth':1} |
| textprops | dict | Paramètres passés au texte, par exemple, {'fontsize':12, 'color':'gray'} |
| center | tuple | Coordonnées du centre du diagramme circulaire, par défaut (0, 0). |
| normalize | bool | Indique s'il faut normaliser x afin que le total soit 1, True par défaut. |
pie() renvoie trois listes :
(patches, texts, autotexts)patches sont les objets de secteur, texts sont les textes des libellés et autotexts sont les textes des pourcentages.
Exemples d'utilisation
Exemple 1 : Diagramme circulaire de base
Exemple
# Données
sizes = [30, 25, 20, 15, 10]
labels = ['Python', 'Java', 'JavaScript', 'C++', 'Go']
colors = ['#3498db', '#e74c3c', '#f39c12', '#2E7DCC', '#9b59b6']
fig, ax = plt.subplots(layout='constrained')
# Tracer le diagramme circulaire
ax.pie(sizes, labels=labels, colors=colors,
autopct='%1.1f%%', # Afficher les pourcentages, en conservant une décimale
startangle=90, # Commencer à partir de la direction de 12 heures
wedgeprops={'edgecolor': 'white', 'linewidth': 1})
ax.set_title('Utilisation des langages de programmation')
plt.show()
Exemple 2 : Mise en évidence d'un secteur spécifique (explode)
Exemple
sizes = [35, 25, 20, 12, 8]
labels = ['Recherche', 'Social', 'Direct', 'E-mail', 'Référence']
explode = (0.1, 0, 0, 0, 0) # Décaler le premier secteur (Recherche) de 0.1
fig, ax = plt.subplots(layout='constrained')
wedges, texts, autotexts = ax.pie(
sizes, labels=labels, explode=explode,
autopct='%1.1f%%', startangle=90,
colors=['#2E7DCC', '#3498db', '#9b59b6', '#f39c12', '#e74c3c'],
wedgeprops={'edgecolor': 'white', 'linewidth': 1},
textprops={'fontsize': 11})
# Modifier la couleur du texte de pourcentage
for autotext in autotexts:
autotext.set_color('white')
autotext.set_fontweight('bold')
ax.set_title('Sources de trafic du site Web', fontsize=14)
plt.show()
Exemple 3 : Diagramme en anneau (Diagramme en beignet)
Exemple
sizes = [40, 30, 20, 10]
labels = ['Chrome (40%)', 'Safari (30%)', 'Firefox (20%)', 'Autre (10%)']
fig, ax = plt.subplots(layout='constrained')
# Utilisez wedgeprops pour définir la largeur afin de créer un diagramme en anneau
wedges, texts = ax.pie(
sizes, labels=labels,
startangle=90,
colors=['#4285F4', '#346EA8', '#FBBC05', '#EA4335'],
wedgeprops={'width': 0.4, # Largeur du secteur (0~1) ; si <1, il devient un diagramme en anneau
'edgecolor': 'white', 'linewidth': 2})
ax.set_title('Part de marché des navigateurs (diagramme en anneau)', fontsize=14)
plt.show()
Exemple 4 : Diagramme en anneau à plusieurs niveaux
Exemple
# Données de la couche externe et données de la couche interne
outer_sizes = [35, 30, 20, 15]
inner_sizes = [40, 30, 30]
outer_labels = ['Asie', 'Europe', 'Amérique', 'Afrique']
inner_labels = ['Mobile', 'Ordinateur', 'Tablette']
outer_colors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#71A0CE']
inner_colors = ['#FFE0B2', '#BBDEFB', '#C8D7E6']
fig, ax = plt.subplots(layout='constrained')
# Anneau externe
ax.pie(outer_sizes, radius=1.3,
labels=outer_labels,
labeldistance=1.1,
colors=outer_colors,
wedgeprops={'width': 0.3, 'edgecolor': 'white', 'linewidth': 2})
# Anneau intérieur
ax.pie(inner_sizes, radius=1.0,
labels=inner_labels,
labeldistance=0.75,
colors=inner_colors,
wedgeprops={'width': 0.3, 'edgecolor': 'white', 'linewidth': 2})
ax.set_title('Diagramme en anneau à niveaux multiples', fontsize=14)
plt.show()
FAQ
Diagramme circulaire vs diagramme à barres : quand utiliser lequel ?
Les diagrammes circulaires conviennent pour représenter les proportions lorsqu'il y a jusqu'à 5-8 catégories, ce qui permet aux lecteurs de saisir intuitivement la part de l'ensemble.
Lorsqu'il y a trop de catégories (plus de 8) ou qu'une comparaison numérique précise est nécessaire, préférez un diagramme à barres.
Explication du format autopct ?
'%1.1f%%'Désigne un nombre à virgule flottante avec une largeur totale minimale de 1 chiffre et 1 décimale, suivi de%%(signe de pourcentage).
Vous pouvez également passer une fonction, telle queautopct=lambda pct: f'{pct:.1f}%'。
Autres extensions