Création de diagrammes Sankey avec Matplotlib

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à utiliser la classe Sankey du module matplotlib.sankey pour créer une longue chaîne de connexions à l'aide de Python Matplotlib.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez sur le coin supérieur gauche pour basculer vers l'onglet Carnet d'adresses pour accéder au carnet Jupyter pour pratiquer.

Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.

Importation des bibliothèques et modules nécessaires

Nous commençons par importer les bibliothèques et les modules nécessaires. Nous allons utiliser matplotlib.pyplot et matplotlib.sankey.

import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey

Définir le nombre de liens par côté

Ensuite, nous définissons le nombre de liens par côté dans notre chaîne. Dans cet exemple, nous le définirons sur 6.

links_per_side = 6

Définir la fonction side

Maintenant, nous définissons la fonction side qui génère une chaîne latérale.

def side(sankey, n=1):
    """Génère une chaîne latérale."""
    prior = len(sankey.diagrams)
    for i in range(0, 2*n, 2):
        sankey.add(flows=[1, -1], orientations=[-1, -1],
                   patchlabel=str(prior + i),
                   prior=prior + i - 1, connect=(1, 0), alpha=0.5)
        sankey.add(flows=[1, -1], orientations=[1, 1],
                   patchlabel=str(prior + i + 1),
                   prior=prior + i, connect=(1, 0), alpha=0.5)

Définir la fonction corner

Ensuite, nous définissons la fonction corner qui génère un lien d'angle.

def corner(sankey):
    """Génère un lien d'angle."""
    prior = len(sankey.diagrams)
    sankey.add(flows=[1, -1], orientations=[0, 1],
               patchlabel=str(prior), facecolor='k',
               prior=prior - 1, connect=(1, 0), alpha=0.5)

Créer les objets figure et axe

Maintenant, nous créons les objets figure et axe à l'aide de plt.subplots().

fig, ax = plt.subplots()

Créer l'objet Sankey

Ensuite, nous créons l'objet Sankey à l'aide de l'objet ax et définissons l'unité sur None.

sankey = Sankey(ax=ax, unit=None)

Ajouter le premier diagramme

Nous ajoutons le premier diagramme à l'aide de sankey.add() avec flows=[1, -1] et orientations=[0, 1].

sankey.add(flows=[1, -1], orientations=[0, 1],
           patchlabel="0", facecolor='k',
           rotation=45)

Ajouter des chaînes latérales et des liens d'angle

Maintenant, nous ajoutons les chaînes latérales et les liens d'angle à l'aide des fonctions side() et corner().

side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)

Terminer et afficher le diagramme Sankey

Enfin, nous terminons le diagramme Sankey à l'aide de sankey.finish() et nous l'affichons à l'aide de plt.show().

sankey.finish()
plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser la classe Sankey du module matplotlib.sankey pour créer une longue chaîne de connexions à l'aide de Python Matplotlib. Nous avons défini les fonctions side et corner pour générer respectivement les chaînes latérales et les liens d'angle. Nous avons également ajouté le premier diagramme, les chaînes latérales et les liens d'angle à l'aide de l'objet Sankey et affiché le diagramme à l'aide de plt.show().