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.

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.")
Die Standardeinstellungen erzeugen ein Diagramm wie dieses.
Text(0.5, 1.0, 'The default settings produce a diagram like this.')

Notiz:

  1. Achsen wurden nicht bereitgestellt, als Sankey() instanziiert wurde, also wurden sie automatisch erstellt.

  2. Das Skalierungsargument war nicht erforderlich, da die Daten bereits normalisiert waren.

  3. Standardmäßig werden die Längen der Pfade ausgerichtet.

Beispiel 2

Dies demonstriert:

  1. Legen Sie einen Pfad länger als die anderen fest

  2. Platzieren einer Beschriftung in der Mitte des Diagramms

  3. Verwenden des Skalierungsarguments zum Normalisieren der Flüsse

  4. Schlüsselwortargumente implizit an PathPatch() übergeben

  5. Ändern des Winkels der Pfeilspitzen

  6. Ändern des Versatzes zwischen den Spitzen der Pfade und ihren Beschriftungen

  7. Formatieren der Zahlen in den Pfadbezeichnungen und der zugehörigen Einheit

  8. Ä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')
Flussdiagramm eines Widgets

Notiz:

  1. Da die Summe der Flüsse ungleich Null ist, ist die Breite des Stamms nicht einheitlich. Das Matplotlib-Protokollierungssystem protokolliert dies auf DEBUG-Ebene.

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

Beispiel 3

Dies demonstriert:

  1. Verbindung zweier Systeme

  2. Ausschalten der Beschriftungen der Mengen

  3. 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()
Zwei Systeme
<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.

Verweise

In diesem Beispiel wird die Verwendung der folgenden Funktionen, Methoden, Klassen und Module gezeigt:

Gesamtlaufzeit des Skripts: ( 0 Minuten 1.040 Sekunden)

Galerie generiert von Sphinx-Gallery