Notiz
Klicken Sie hier , um den vollständigen Beispielcode herunterzuladen
Die Sankey-Klasse #
Demonstrieren Sie die Sankey-Klasse, indem Sie drei grundlegende Diagramme erstellen.
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
Beispiel 1 – Hauptsächlich Standardwerte
Dies zeigt, wie Sie ein einfaches Diagramm erstellen, indem Sie implizit die Methode Sankey.add() aufrufen und finish() an den Aufruf der Klasse anhängen.
Text(0.5, 1.0, 'The default settings produce a diagram like this.')
Notiz:
Achsen wurden nicht bereitgestellt, als Sankey() instanziiert wurde, also wurden sie automatisch erstellt.
Das Skalierungsargument war nicht erforderlich, da die Daten bereits normalisiert waren.
Standardmäßig werden die Längen der Pfade ausgerichtet.
Beispiel 2
Dies demonstriert:
Legen Sie einen Pfad länger als die anderen fest
Platzieren einer Beschriftung in der Mitte des Diagramms
Verwenden des Skalierungsarguments zum Normalisieren der Flüsse
Schlüsselwortargumente implizit an PathPatch() übergeben
Ändern des Winkels der Pfeilspitzen
Ändern des Versatzes zwischen den Spitzen der Pfade und ihren Beschriftungen
Formatieren der Zahlen in den Pfadbezeichnungen und der zugehörigen Einheit
Ändern des Aussehens des Patches und der Beschriftungen, nachdem die Figur erstellt wurde
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')
Notiz:
Da die Summe der Flüsse ungleich Null ist, ist die Breite des Stamms nicht einheitlich. Das Matplotlib-Protokollierungssystem protokolliert dies auf DEBUG-Ebene.
Der zweite Fluss wird nicht angezeigt, da sein Wert Null ist. Auch dies wird auf DEBUG-Ebene protokolliert.
Beispiel 3
Dies demonstriert:
Verbindung zweier Systeme
Ausschalten der Beschriftungen der Mengen
Hinzufügen einer Legende
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()
<matplotlib.legend.Legend object at 0x7f2cdd75b5e0>
Beachten Sie, dass nur eine Verbindung angegeben ist, aber die Systeme einen Kreis bilden, da: (1) die Längen der Pfade gerechtfertigt sind und (2) die Ausrichtung und Reihenfolge der Flüsse gespiegelt ist.
plt.show()
Verweise
In diesem Beispiel wird die Verwendung der folgenden Funktionen, Methoden, Klassen und Module gezeigt:
Gesamtlaufzeit des Skripts: ( 0 Minuten 1.040 Sekunden)