Einführung
In diesem Lab werden wir lernen, wie man die Sankey-Klasse aus dem matplotlib.sankey-Modul verwendet, um eine lange Kette von Verbindungen mit Python Matplotlib zu erstellen.
Tipps für die VM
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 nutzen.
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 und Module
Wir beginnen mit dem Importieren der erforderlichen Bibliotheken und Module. Wir werden matplotlib.pyplot und matplotlib.sankey verwenden.
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
Definieren der Anzahl der Verbindungen pro Seite
Als nächstes definieren wir die Anzahl der Verbindungen pro Seite in unserer Kette. In diesem Beispiel setzen wir sie auf 6.
links_per_side = 6
Definieren der side-Funktion
Jetzt definieren wir die side-Funktion, die eine Seitenkette generiert.
def side(sankey, n=1):
"""Generate a side chain."""
prior = len(sankey.diagrams)
for i in range(0, 2*n, 2):
sankey.add(flows=[1, -1], orientations=[-1, -1],
patchlabel=str(prior + i),
prior=prior + i - 1, connect=(1, 0), alpha=0.5)
sankey.add(flows=[1, -1], orientations=[1, 1],
patchlabel=str(prior + i + 1),
prior=prior + i, connect=(1, 0), alpha=0.5)
Definieren der corner-Funktion
Als nächstes definieren wir die corner-Funktion, die einen Eckverbindungsstrang generiert.
def corner(sankey):
"""Generate a corner link."""
prior = len(sankey.diagrams)
sankey.add(flows=[1, -1], orientations=[0, 1],
patchlabel=str(prior), facecolor='k',
prior=prior - 1, connect=(1, 0), alpha=0.5)
Erstellen der Figure- und Achsenobjekte
Jetzt erstellen wir die Figure- und Axes-Objekte mit plt.subplots().
fig, ax = plt.subplots()
Erstellen des Sankey-Objekts
Als nächstes erstellen wir das Sankey-Objekt mit dem Axes-Objekt und legen die unit auf None fest.
sankey = Sankey(ax=ax, unit=None)
Fügen des ersten Diagramms hinzu
Wir fügen das erste Diagramm hinzu, indem wir sankey.add() mit flows=[1, -1] und orientations=[0, 1] verwenden.
sankey.add(flows=[1, -1], orientations=[0, 1],
patchlabel="0", facecolor='k',
rotation=45)
Fügen von Seitenketten und Eckverbindungen hinzu
Jetzt fügen wir die Seitenketten und Eckverbindungen hinzu, indem wir die Funktionen side() und corner() verwenden.
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
Beenden und Anzeigen des Sankey-Diagramms
Schließlich beenden wir das Sankey-Diagramm mit sankey.finish() und zeigen es mit plt.show() an.
sankey.finish()
plt.show()
Zusammenfassung
In diesem Lab haben wir gelernt, wie man die Sankey-Klasse aus dem matplotlib.sankey-Modul verwendet, um eine lange Kette von Verbindungen mit Python Matplotlib zu erstellen. Wir haben die Funktionen side und corner definiert, um die Seitenketten und Eckverbindungen jeweils zu generieren. Wir haben auch das erste Diagramm, die Seitenketten und die Eckverbindungen mit dem Sankey-Objekt hinzugefügt und das Diagramm mit plt.show() angezeigt.