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.

Sankey(flows=[0.25, 0.15, 0.60, -0.20, -0.15, -0.05, -0.50, -0.10],
       labels=['', '', '', 'First', 'Second', 'Third', 'Fourth', 'Fifth'],
       orientations=[-1, 1, 0, 1, 1, 1, 0, -1]).finish()
plt.title("The default settings produce a diagram like this.")
The default settings produce a diagram like this.

Hinweis

  1. Es wurden keine Achsen bereitgestellt, als Sankey() instanziiert wurde, daher wurden sie automatisch erstellt.

  2. Das Argument scale war nicht notwendig, da die Daten bereits normalisiert waren.

  3. Standardmäßig sind die Längen der Pfade gerechtfertigt.

Beispiel 2

Dies demonstriert

  1. Einen Pfad länger als die anderen zu machen

  2. Eine Beschriftung in der Mitte des Diagramms zu platzieren

  3. Das Argument scale zur Normalisierung der Flüsse zu verwenden

  4. Keyword-Argumente implizit an PathPatch() zu übergeben

  5. Den Winkel der Pfeilspitzen zu ändern

  6. Den Abstand zwischen den Spitzen der Pfade und ihren Beschriftungen zu ändern

  7. Die Zahlen in den Pfadbeschriftungen und die zugehörige Einheit zu formatieren

  8. 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')
Flow Diagram of a Widget

Hinweis

  1. 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.

  2. Der zweite Fluss erscheint nicht, da sein Wert Null ist. Auch dies wird auf DEBUG-Ebene protokolliert.

Beispiel 3

Dies demonstriert

  1. Zwei Systeme zu verbinden

  2. Die Beschriftungen der Mengen auszuschalten

  3. 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()
Two Systems

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.

Referenzen

Die Verwendung der folgenden Funktionen, Methoden, Klassen und Module wird in diesem Beispiel gezeigt

Gesamtlaufzeit des Skripts: (0 Minuten 1,537 Sekunden)

Galerie generiert von Sphinx-Gallery