Hinweis
Gehen Sie zum Ende, um den vollständigen Beispielcode herunterzuladen.
Die Sankey-Klasse#
Demonstriert die Sankey-Klasse durch die Erstellung von drei grundlegenden Diagrammen.
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
Beispiel 1 -- Größtenteils Standardwerte
Dies demonstriert, wie ein einfaches Diagramm durch implizites Aufrufen der Sankey.add()-Methode und durch Anhängen von finish() an den Aufruf der Klasse erstellt wird.

Hinweis
Es wurden keine Achsen bereitgestellt, als Sankey() instanziiert wurde, daher wurden sie automatisch erstellt.
Das Argument scale war nicht notwendig, da die Daten bereits normalisiert waren.
Standardmäßig sind die Längen der Pfade gerechtfertigt.
Beispiel 2
Dies demonstriert
Einen Pfad länger als die anderen zu machen
Eine Beschriftung in der Mitte des Diagramms zu platzieren
Das Argument scale zur Normalisierung der Flüsse zu verwenden
Keyword-Argumente implizit an PathPatch() zu übergeben
Den Winkel der Pfeilspitzen zu ändern
Den Abstand zwischen den Spitzen der Pfade und ihren Beschriftungen zu ändern
Die Zahlen in den Pfadbeschriftungen und die zugehörige Einheit zu formatieren
Das Aussehen des Patches und der Beschriftungen nach der Erstellung der Abbildung zu ändern
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[],
title="Flow Diagram of a Widget")
sankey = Sankey(ax=ax, scale=0.01, offset=0.2, head_angle=180,
format='%.0f', unit='%')
sankey.add(flows=[25, 0, 60, -10, -20, -5, -15, -10, -40],
labels=['', '', '', 'First', 'Second', 'Third', 'Fourth',
'Fifth', 'Hurray!'],
orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0],
pathlengths=[0.25, 0.25, 0.25, 0.25, 0.25, 0.6, 0.25, 0.25,
0.25],
patchlabel="Widget\nA") # Arguments to matplotlib.patches.PathPatch
diagrams = sankey.finish()
diagrams[0].texts[-1].set_color('r')
diagrams[0].text.set_fontweight('bold')

Hinweis
Da die Summe der Flüsse ungleich Null ist, ist die Breite des Stamms nicht gleichmäßig. Das Matplotlib-Logging-System protokolliert dies auf DEBUG-Ebene.
Der zweite Fluss erscheint nicht, da sein Wert Null ist. Auch dies wird auf DEBUG-Ebene protokolliert.
Beispiel 3
Dies demonstriert
Zwei Systeme zu verbinden
Die Beschriftungen der Mengen auszuschalten
Eine Legende hinzuzufügen
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[], title="Two Systems")
flows = [0.25, 0.15, 0.60, -0.10, -0.05, -0.25, -0.15, -0.10, -0.35]
sankey = Sankey(ax=ax, unit=None)
sankey.add(flows=flows, label='one',
orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0])
sankey.add(flows=[-0.25, 0.15, 0.1], label='two',
orientations=[-1, -1, -1], prior=0, connect=(0, 0))
diagrams = sankey.finish()
diagrams[-1].patch.set_hatch('/')
plt.legend()

Beachten Sie, dass nur eine Verbindung spezifiziert ist, aber die Systeme einen Kreislauf bilden, da: (1) die Längen der Pfade gerechtfertigt sind und (2) die Ausrichtung und Reihenfolge der Flüsse gespiegelt ist.
plt.show()
Referenzen
Die Verwendung der folgenden Funktionen, Methoden, Klassen und Module wird in diesem Beispiel gezeigt
Gesamtlaufzeit des Skripts: (0 Minuten 1,537 Sekunden)