Nota
Fare clic qui per scaricare il codice di esempio completo
La classe Sankey #
Dimostrare la classe Sankey producendo tre diagrammi di base.
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
Esempio 1 -- Prevalentemente valori predefiniti
Questo dimostra come creare un diagramma semplice chiamando implicitamente il metodo Sankey.add() e aggiungendo finish() alla chiamata alla classe.
Text(0.5, 1.0, 'The default settings produce a diagram like this.')
Avviso:
Gli assi non sono stati forniti quando Sankey() è stato istanziato, quindi sono stati creati automaticamente.
L'argomento scale non era necessario poiché i dati erano già stati normalizzati.
Per impostazione predefinita, le lunghezze dei percorsi sono giustificate.
Esempio 2
Ciò dimostra:
Impostare un percorso più lungo degli altri
Inserimento di un'etichetta al centro del diagramma
Utilizzo dell'argomento scale per normalizzare i flussi
Passaggio implicito di argomenti di parole chiave a PathPatch()
Cambiare l'angolo delle punte delle frecce
Modifica dell'offset tra le punte dei tracciati e le relative etichette
Formattazione dei numeri nelle etichette del percorso e dell'unità associata
Modifica dell'aspetto della toppa e delle etichette dopo la creazione della figura
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')
Avviso:
Poiché la somma dei flussi è diversa da zero, la larghezza del tronco non è uniforme. Il sistema di registrazione matplotlib lo registra a livello DEBUG.
Il secondo flusso non viene visualizzato perché il suo valore è zero. Ancora una volta, questo viene registrato a livello DEBUG.
Esempio 3
Ciò dimostra:
Collegamento di due sistemi
Spegnere le etichette delle quantità
Aggiunta di una legenda
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>
Si noti che è specificata una sola connessione, ma i sistemi formano un circuito poiché: (1) le lunghezze dei percorsi sono giustificate e (2) l'orientamento e l'ordinamento dei flussi è rispecchiato.
plt.show()
Riferimenti
L'uso delle seguenti funzioni, metodi, classi e moduli è mostrato in questo esempio:
Tempo di esecuzione totale dello script: (0 minuti 1.040 secondi)