Matplotlib pie()-Funktion
Matplotlib-Referenzdokumentation
pie()Wird zum Zeichnen von Kreisdiagrammen verwendet, die das proportionale Verhältnis jedes Teils zum Ganzen zeigen.
Kreisdiagramme eignen sich zur Darstellung der Anteile einer kleinen Anzahl von Kategorien (meist im Bereich von 5-8).
Funktionsdefinition
pyplot-Schnittstelle
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)
Axes-Schnittstelle
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)
Parameterbeschreibung
| Parameter | Type | Beschreibung |
|---|---|---|
| x | 1D-Array-ähnlich | Der Wert jedes Sektors (erforderlich), automatisch normalisiert. |
| explode | array-ähnlich | Der Abstand, um den jeder Sektor vom Mittelpunkt versetzt ist; 0 bedeutet kein Versatz. |
| labels | Liste | Beschriftungstext für jeden Sektor. |
| colors | Liste | Farbe jedes Sektors. |
| autopct | str oder callable | Prozentsätze automatisch anzeigen, z. B. '%1.1f%%' bedeutet eine Nachkommastelle; None blendet sie aus. |
| pctdistance | float | Abstandsverhältnis des Prozenttextes vom Mittelpunkt, Standard 0.6. |
| shadow | bool | Ob ein Schatteneffekt hinzugefügt werden soll. |
| labeldistance | float | Abstandsverhältnis der Beschriftungen vom Mittelpunkt, Standard 1.1. |
| startangle | float | Startwinkel des ersten Sektors (gegen den Uhrzeigersinn); 0 bedeutet, dass bei der 3-Uhr-Richtung begonnen wird. |
| radius | float | Radius des Kreisdiagramms, Standard 1. |
| counterclock | bool | Sektorrichtung: True ist gegen den Uhrzeigersinn (Standard), False ist im Uhrzeigersinn. |
| wedgeprops | dict | Parameter, die an jeden Sektor (Wedge) übergeben werden, z. B. {'edgecolor':'white', 'linewidth':1} |
| textprops | dict | Parameter, die an Text übergeben werden, z. B. {'fontsize':12, 'color':'gray'} |
| center | tuple | Mittelpunktkoordinaten des Kreisdiagramms, Standard (0, 0). |
| normalize | bool | Ob x so normalisiert werden soll, dass die Gesamtsumme 1 ergibt, Standard True. |
pie() gibt drei Listen zurück:
(patches, texts, autotexts)patches sind die Sektorobjekte, texts sind die Beschriftungstexte und autotexts sind die Prozenttexte.
Anwendungsbeispiele
Beispiel 1: Einfaches Kreisdiagramm
Beispiel
# Daten
sizes = [30, 25, 20, 15, 10]
labels = ['Python', 'Java', 'JavaScript', 'C++', 'Go']
colors = ['#3498db', '#e74c3c', '#f39c12', '#2E7DCC', '#9b59b6']
fig, ax = plt.subplots(layout='constrained')
# Kreisdiagramm zeichnen
ax.pie(sizes, labels=labels, colors=colors,
autopct='%1.1f%%', # Prozentsätze anzeigen, eine Nachkommastelle beibehalten
startangle=90, # Von der 12-Uhr-Richtung aus starten
wedgeprops={'edgecolor': 'white', 'linewidth': 1})
ax.set_title('Nutzung von Programmiersprachen')
plt.show()
Beispiel 2: Hervorheben eines bestimmten Sektors (explode)
Beispiel
sizes = [35, 25, 20, 12, 8]
labels = ['Search', 'Social', 'Direct', 'Email', 'Referral']
explode = (0.1, 0, 0, 0, 0) # Verschiebe den ersten Sektor (Search) um 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})
# Ändere die Farbe des Prozenttextes
for autotext in autotexts:
autotext.set_color('white')
autotext.set_fontweight('bold')
ax.set_title('Website-Traffic-Quellen', fontsize=14)
plt.show()
Beispiel 3: Donut-Diagramm (Doughnut-Diagramm)
Beispiel
sizes = [40, 30, 20, 10]
labels = ['Chrome (40%)', 'Safari (30%)', 'Firefox (20%)', 'Sonstige (10%)']
fig, ax = plt.subplots(layout='constrained')
# Verwende wedgeprops, um width festzulegen, um ein Donut-Diagramm zu erstellen
wedges, texts = ax.pie(
sizes, labels=labels,
startangle=90,
colors=['#4285F4', '#346EA8', '#FBBC05', '#EA4335'],
wedgeprops={'width': 0.4, # Sektorbreite (0~1); wenn <1, wird daraus ein Donut
'edgecolor': 'white', 'linewidth': 2})
ax.set_title('Browser-Marktanteil (Donut-Diagramm)', fontsize=14)
plt.show()
Beispiel 4: Mehrstufiges Donut-Diagramm
Beispiel
# Daten der äußeren Schicht und der inneren Schicht
outer_sizes = [35, 30, 20, 15]
inner_sizes = [40, 30, 30]
outer_labels = ['Asien', 'Europa', 'Amerika', 'Afrika']
inner_labels = ['Mobil', 'Desktop', 'Tablet']
outer_colors = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#71A0CE']
inner_colors = ['#FFE0B2', '#BBDEFB', '#C8D7E6']
fig, ax = plt.subplots(layout='constrained')
# Äußerer Ring
ax.pie(outer_sizes, radius=1.3,
labels=outer_labels,
labeldistance=1.1,
colors=outer_colors,
wedgeprops={'width': 0.3, 'edgecolor': 'white', 'linewidth': 2})
# Innerer Ring
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('Mehrstufiges Donut-Diagramm', fontsize=14)
plt.show()
FAQ
Kreisdiagramm vs. Balkendiagramm: Wann welches verwenden?
Kreisdiagramme eignen sich zur Darstellung von Anteilen bei bis zu 5-8 Kategorien, sodass Leser den Anteil am Ganzen intuitiv erfassen können.
Wenn es zu viele Kategorien gibt (mehr als 8) oder ein präziser numerischer Vergleich erforderlich ist, ist ein Balkendiagramm vorzuziehen.
autopct-Format-Erklärung?
'%1.1f%%'Bedeutet eine Gleitkommazahl mit einer minimalen Gesamtbreite von 1 Ziffer und 1 Dezimalstelle, gefolgt von%%(Prozentzeichen).
Sie können auch eine Funktion übergeben, wie zum Beispielautopct=lambda pct: f'{pct:.1f}%'。
Andere Erweiterungen