Erstellung von Matplotlib Sankey-Diagrammen

Beginner

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

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.