In diesem Beitrag zeichnen wir ein neues Diagramm mit Matplotlib. Dabei handelt es sich um ein Sankey Diagramm. Dieser Typ von Grafik wird verwendet, um Mengenflüsse darzustellen. Dabei werden Mengen in Abhängigkeit von ihrer Größe durch Pfeile beschrieben. Werfen wir einen Blick auf unsere Grafik.
In diesem Bild geht es um die Visualisierung der Verluste von Verbrennungsmotoren. Wie zu erkennen ist, wird nur ein sehr kleiner Teil des Treibstoffes für die Fahrleistung aufgewendet. Der größte Teil der investierten Energie geht durch Kühlung und den Auspuff verloren.
Zum Zeichnen dieses Diagramms binden wir unter Anderem das Modul Sankey (Link zu Beschreibung) aus dem Matplotlib Modul ein. Anschließend initialisieren wir das Diagramm mit mehreren Parametern. Da wir Prozentangaben verwenden wollen, setzen wir den Parameter scale
auf 0.01. Für unit
wählen wir das Prozentzeichen und format
wird als Zahl ohne Nachkommastellen definiert. Die Variable margin
legt einen Mindestabstand zum Rahmen des Diagramms fest und mit gap
wird der horizontale Abstand zwischen den abzweigenden Pfeilen gesetzt.
1 2 3 4 5 6 |
# Zeichenmodule importieren import matplotlib.pyplot as plt from matplotlib.sankey import Sankey # Sankey Diagramm initialisieren und parametrisieren sankey = Sankey(scale=0.01, unit='%', format='%.0f', margin=0.5, gap=0.5) |
Im nächsten Schritt fügen wir das Diagramm hinzu. In der Liste flows
geben wir die Menge der Zu – und Abflüsse in Prozent ein. Abflüsse erhalten einen negativen und Zuflüsse einen positiven Wert. Des Weiteren legen wir die Orientierung der Pfeile fest. In orientations
geben wir dazu die Werte 0, 1 oder -1 an. Als letzten Parameter übergeben wir die Bezeichnungen der einzelnen Pfeile (labels
).
Um die Grafik zu zeichnen ist nun noch die Anweisung sankey.finish()
notwendig. Wir legen den Titel fest und zeigen das Bild mit plt.show()
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# Sankey Diagramm hinzufügen sankey.add(flows=[100, -20, -6, -7, -18, -49], orientations=[0, -1, 1, 1, 1, 1], labels=['Treibstoff', 'Fahrleistung', 'Reibung', 'Pumpe', 'Auspuff', 'Kühlung'] ) # Sankey Diagramm abschließen sankey.finish() # Titel festlegen plt.title('Verluste von Verbrennungsmotoren') # Bild anzeigen plt.show() |
Das Beispiel kann mir folgendem Befehl ausgeführt werden:
python3 matplotlib_sankey.py
Das komplette Beispiel herunterladen: matplotlib_sankey.zip
Hinterlasse jetzt einen Kommentar