Geschachtelte Kreisdiagramme mit Matplotlib

PythonPythonBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Kreisscheiben sind beliebte Datenvisualisierungstools, die Daten in kreisförmiger Form darstellen. Es gibt jedoch Situationen, in denen Sie möglicherweise eine geschachtelte Version der Kreisscheibe, die als Donut-Chart bekannt ist, erstellen möchten. In diesem Tutorial führen wir Sie durch die Erstellung geschachtelter Kreisscheiben mit Matplotlib, einer beliebten Datenvisualisierungsbibliothek in Python.

VM-Tipps

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Importieren der erforderlichen Bibliotheken

Zunächst müssen wir die erforderlichen Bibliotheken importieren. In diesem Fall benötigen wir Matplotlib und numpy.

import matplotlib.pyplot as plt
import numpy as np

Erstellen eines geschachtelten Kreisdiagramms mit ax.pie

Wir können ein geschach teltes Kreisdiagramm mit der ax.pie-Methode erstellen. Zunächst werden wir einige simulierte Daten generieren, die drei Gruppen entsprechen. Im inneren Kreis werden wir jede Zahl als eigene Gruppe behandeln. Im äußeren Kreis werden wir sie als Mitglieder ihrer ursprünglichen 3 Gruppen darstellen.

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()

Erstellen eines geschachtelten Kreisdiagramms mit ax.bar

Wir können auch ein geschach teltes Kreisdiagramm erstellen, indem wir die ax.bar-Methode auf Achsen mit einem polaren Koordinatensystem verwenden. Dies kann mehr Flexibilität bei der genauen Gestaltung des Diagramms bieten.

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

size = 0.3
vals = np.array([[60., 32.], [37., 40.], [29., 10.]])
## Normalisiere vals auf 2 pi
valsnorm = vals/np.sum(vals)*2*np.pi
## Bestimme die Ordinaten der Balkenränder
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()

Anpassen des geschachtelten Kreisdiagramms

Wir können das geschachtelte Kreisdiagramm anpassen, indem wir die Farben ändern, Labels hinzufügen und die Größe anpassen.

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])

## Füge Labels hinzu
labels = ['Gruppe 1', 'Gruppe 2', 'Gruppe 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'))

## Setze den Titel
ax.set(aspect="equal", title='Geschach teltes Kreisdiagramm')

plt.show()

Speichern des geschachtelten Kreisdiagramms

Wir können das geschachtelte Kreisdiagramm als Bild im PNG-, PDF- oder SVG-Format speichern.

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

Zusammenfassung

In diesem Tutorial haben wir gelernt, wie man geschachtelte Kreisdiagramme in Matplotlib mit zwei Methoden erstellt: ax.pie und ax.bar. Wir haben auch gelernt, wie man das geschachtelte Kreisdiagramm anpassen kann, indem man Labels hinzufügt, Farben ändert und die Größe anpasst. Schließlich haben wir gesehen, wie man das geschachtelte Kreisdiagramm als Bild im PNG-, PDF- oder SVG-Format speichert.