Diagramme Sankey de Plotly

Ammar Ali 15 février 2024
Diagramme Sankey de Plotly

Ce didacticiel abordera la création d’un diagramme Sankey à l’aide de la fonction Sankey() de l’objet graphique dans Plotly.

Diagramme Sankey de Plotly

Un diagramme Sankey représente les données sous la forme d’un organigramme dans lequel différents nœuds se connectent via un lien. La largeur du lien représente la valeur du nœud.

Nous pouvons utiliser la fonction Sankey() de plotly.graph_object pour créer un diagramme de Sankey. La fonction Sankey() a deux arguments principaux, nœud et lien. À l’intérieur de l’argument node, nous pouvons passer une étiquette qui définira l’étiquette de chaque nœud.

On peut aussi passer la couleur des nœuds, l’épaisseur des nœuds, et la distance entre chaque nœud. Nous pouvons transmettre les informations de lien à l’intérieur de l’argument de lien comme la source, la cible et la valeur du lien.

Nous pouvons utiliser l’index de l’étiquette du nœud pour spécifier le nœud source et cible, et la valeur peut être n’importe quel nombre entier. Par exemple, si nous voulons connecter les deux premiers nœuds, nous passerons 0 dans la liste source et 1 dans la liste cible.

Par exemple, faisons un diagramme Sankey de six nœuds. Voir le code ci-dessous.

import plotly.graph_objects as go

fig = go.Figure(
    data=[
        go.Sankey(
            node=dict(
                pad=50, thickness=5, label=["A", "B", "C", "D", "E", "F"], color="blue"
            ),
            link=dict(
                source=[0, 1, 0, 2, 3, 3],
                target=[5, 3, 3, 4, 4, 5],
                value=[3, 4, 2, 8, 4, 2],
            ),
        )
    ]
)

fig.show()

Production :

diagramme de sankey de six nœuds

Nous pouvons changer la couleur des nœuds en n’importe quelle couleur prise en charge par Plotly. Si nous ne passons qu’une seule couleur à l’intérieur de l’argument color, tous les nœuds auront la même couleur.

Nous pouvons donner à chaque nœud une couleur différente en utilisant une liste de noms de couleurs au lieu d’un seul nom de couleur. Nous pouvons également changer la couleur de chaque lien de la même manière que nous changeons la couleur de chaque nœud.

Nous pouvons également ajouter une ligne autour de chaque nœud en utilisant l’argument line à l’intérieur du paramètre node, et nous pouvons également définir la couleur et la largeur de la ligne. Nous pouvons ajouter un titre au diagramme en utilisant l’argument title_text de la fonction update_layout, et nous pouvons également définir la police du texte en utilisant l’argument font_size.

Nous pouvons définir le format de valeur affiché en survolant le lien à l’aide de l’argument valueformat. Nous pouvons également ajouter un suffixe après chaque valeur en utilisant l’argument valuesuffix.

Nous pouvons également modifier l’orientation du diagramme de Sankey en utilisant l’argument orientation et en définissant sa valeur sur v pour l’orientation verticale et h pour l’orientation horizontale.

Nous pouvons également modifier la couleur d’arrière-plan du tracé et la couleur d’arrière-plan du papier à l’aide des arguments plot_bgcolor et paper_bgcolor dans la fonction update_layout().

Nous pouvons également modifier les informations que nous voulons afficher lorsque le curseur est survolé sur le lien ou les nœuds en utilisant l’argument hovertemplate. Si nous voulons afficher la valeur d’une variable dans la boîte de survol, nous pouvons utiliser le signe pourcentage et mettre le nom de la variable entre crochets.

Modifions les propriétés mentionnées ci-dessus. Voir le code ci-dessous.

import plotly.graph_objects as go

fig = go.Figure(
    data=[
        go.Sankey(
            valueformat=".0f",
            valuesuffix=" kg",
            orientation="v",
            node=dict(
                pad=50,
                thickness=10,
                line=dict(color="red", width=2),
                label=["A", "B", "C", "D", "E", "F"],
                color=["blue", "red", "green", "yellow", "brown"],
            ),
            link=dict(
                source=[0, 1, 0, 2, 3, 3],
                target=[5, 3, 3, 4, 4, 5],
                value=[3, 4, 2, 8, 4, 2],
                color=["blue", "red", "green", "yellow", "brown"],
                hovertemplate="This link has total value %{value}<extra></extra>",
            ),
        )
    ]
)

fig.update_layout(
    title_text="Sankey Diagram",
    font_size=16,
    plot_bgcolor="white",
    paper_bgcolor="lightblue",
)
fig.show()

Production :

modifier les propriétés du diagramme de sankey

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - Plotly Plot