Accéder au contenu principal

Comment créer un diagramme de Sankey dans Excel, Python et R

Des concepts de base à la mise en œuvre avancée, apprenez à construire des diagrammes de Sankey efficaces avec des outils populaires. Découvrez les composants clés, les bonnes pratiques et les principes de conception qui rendent les visualisations de flux parlantes et utiles.
Actualisé 22 avr. 2026  · 9 min lire

La force des diagrammes de Sankey réside dans leur capacité à simplifier des systèmes en plusieurs étapes. Plutôt que de fouiller des lignes de données pour trouver les plus grandes pertes d'énergie ou les postes budgétaires majeurs, il suffit de repérer les flux les plus épais. Ils sont donc utiles en gestion de l'énergie, en analyse financière, pour optimiser un entonnoir marketing, et dans toute situation où comprendre la circulation et la transformation des ressources compte davantage que des comparaisons numériques au centime près.

Si vous souhaitez aller au-delà de la visualisation de flux et développer vos capacités d'analyse, nos cours Data Visualization in Power BI et Data Visualization in Tableau vous apprennent à créer des tableaux de bord professionnels et des rapports interactifs avec des plateformes de business intelligence de référence.

Qu'est-ce qu'un diagramme de Sankey ?

Un diagramme de Sankey est une visualisation des flux où la largeur des flèches de liaison représente l'ampleur du flux entre différentes étapes, catégories ou entités. Contrairement aux organigrammes qui décrivent des étapes de processus ou aux histogrammes qui comparent des valeurs distinctes, les diagrammes de Sankey excellent pour montrer comment des quantités circulent, se transforment ou se répartissent au sein d'un système.

Composants d'un diagramme de Sankey. Image de l'auteur.

Le diagramme ci-dessus illustre la circulation d'un budget annuel de 100 000 $ à travers différentes catégories. Remarquez comment l'allocation Marketing (40 000 $) apparaît comme un flux nettement plus épais que la R&D (25 000 $), rendant les différences proportionnelles immédiatement visibles.

Histoire et évolution des diagrammes de Sankey

Le premier diagramme de Sankey connu date de 1898, lorsque le capitaine Matthew Henry Phineas Riall Sankey l'a utilisé pour montrer le rendement énergétique d'une machine à vapeur. Son schéma révélait qu'une faible part seulement de l'énergie du combustible servait au travail utile, la majeure partie étant perdue sous forme de chaleur.

the very first Sankey diagram

Cependant, l'idée d'une visualisation proportionnelle des flux est antérieure au capitaine Sankey. En 1869, Charles Joseph Minard a créé ce que beaucoup considèrent comme le diagramme de flux le plus célèbre, représentant la désastreuse campagne de Russie de Napoléon en 1812. Le tracé de Minard montrait la diminution de la taille de l'armée à l'aller puis au retour, l'épaisseur de la ligne indiquant le nombre de soldats survivants.

Composants d'un diagramme de Sankey

Comprendre les éléments clés d'un diagramme de Sankey vous aide à la fois à en interpréter et à en créer efficacement.

  • Nœuds : représentent les catégories, étapes ou entités de votre système. Dans notre exemple budgétaire, « Annual Budget », « Marketing » et « Digital Ads » sont des nœuds. Les nœuds sources (comme « Annual Budget ») apparaissent généralement à gauche, tandis que les nœuds cibles (comme « Digital Ads ») se trouvent à droite, selon vos préférences de mise en page.
  • Flux ou liens : ce sont les connecteurs directionnels entre les nœuds, dont la largeur est proportionnelle à la valeur représentée. Le flux orange épais d'Annual Budget vers Marketing représente 40 000 $, tandis que le flux vers Content, beaucoup plus fin, ne représente que 5 000 $. Cette largeur proportionnelle est la caractéristique clé qui rend les diagrammes de Sankey si efficaces pour mettre en évidence les écarts d'ampleur.
  • Valeurs : ce sont les données numériques qui déterminent la largeur de chaque flux. Elles peuvent représenter de l'argent, de l'énergie, des matériaux, des personnes ou toute ressource quantifiable circulant dans votre système. Le diagramme calcule automatiquement la largeur appropriée à partir de ces valeurs pour garantir la justesse visuelle.
  • Pertes : flux particuliers représentant des pertes, du gaspillage ou des ressources qui sortent du système sans atteindre un nœud cible. Notre exemple budgétaire n'en montre pas, mais on peut les voir dans des schémas énergétiques illustrant les déperditions de chaleur, ou dans des entonnoirs marketing montrant les clients qui abandonnent.

Comment créer un diagramme de Sankey

La création d'un diagramme de Sankey varie selon vos outils et votre aisance technique. Nous allons traiter le même exemple d'allocation budgétaire avec Excel, Python et R, afin que vous choisissiez la méthode la mieux adaptée à votre flux de travail et à votre expertise.

Diagramme de Sankey dans Excel

Excel n'inclut pas de type de graphique Sankey natif : il faut donc utiliser un complément tiers. D'expérience, ChartExpo fait partie des options les plus populaires et faciles à prendre en main.

Interface ChartExpo et aperçu d'un diagramme de Sankey. Image de l'auteur.

Avant de créer le diagramme, structurez vos données au format source-cible-valeur, chaque ligne représentant un flux. Dans notre exemple, il s'agit de lister chaque allocation budgétaire sur une ligne avec la catégorie source, la catégorie cible et le montant en dollars.

Une fois ChartExpo installé, la procédure est simple. Installez d'abord le complément depuis le Microsoft AppSource ou via la place de marché des compléments d'Excel. Sélectionnez ensuite votre plage de données en incluant les en-têtes, puis choisissez Sankey Chart parmi les options de visualisation de ChartExpo.

Le complément détecte automatiquement vos colonnes source, cible et valeur selon la structure fournie. Comme montré ci-dessus, ChartExpo propose un aperçu du diagramme et des options pour Create Chart From Selection, personnaliser la visualisation ou exporter le graphique final pour des présentations ou des rapports.

Diagramme de Sankey en Python

Python offre d'excellentes options pour créer des diagrammes de Sankey, Plotly étant la bibliothèque la plus recommandée pour son interactivité et la qualité professionnelle de ses rendus. En reprenant notre exemple d'allocation budgétaire, recréons la visualisation identique par le code.

Étape 1 : préparation des données

Commencez par organiser vos données dans le format attendu par Plotly. Il vous faut trois éléments principaux : une liste de noms de nœuds, et les tableaux d'indices source, d'indices cible et de valeurs pour chaque flux.

import plotly.graph_objects as go

# Define all nodes in your diagram
nodes = ["Annual Budget", "Marketing", "Operations", "R&D", 
         "Digital Ads", "Events", "Content", "Salaries", 
         "Office", "Utilities", "Software", "Equipment"]

# Define the connections (using node indices)
source_indices = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3]
target_indices = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
values = [40, 35, 25, 25, 10, 5, 20, 10, 5, 15, 10]

Les indices correspondent aux positions dans la liste des nœuds : ainsi, source_indices = [0, 0, 0] signifie que les trois premiers flux partent de "Annual Budget" (position 0).

Étape 2 : création de base

Créez la structure du diagramme avec l'objet Sankey de Plotly. Les paramètres essentiels sont la définition des nœuds et la spécification des liens.

fig = go.Figure(data=[go.Sankey(
    node=dict(
        label=nodes,
        pad=15,
        thickness=20
    ),
    link=dict(
        source=source_indices,
        target=target_indices,
        value=values
    )
)])

Cela génère un diagramme de Sankey fonctionnel avec un style par défaut. Le paramètre pad contrôle l'espacement entre les nœuds, tandis que thickness détermine la largeur des rectangles des nœuds.

Étape 3 : style et personnalisation

Améliorez votre diagramme avec des couleurs, une mise en page optimisée et un formatage professionnel.

# Add colors and transparency
fig.update_traces(
    node_color=["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728",
                "#ff9999", "#ff9999", "#ff9999", "#90ee90",
                "#90ee90", "#90ee90", "#ffcccb", "#ffcccb"],
    link_color=["rgba(255, 127, 14, 0.4)", "rgba(44, 160, 44, 0.4)",
                "rgba(214, 39, 40, 0.4)", "rgba(255, 127, 14, 0.6)",
                "rgba(255, 127, 14, 0.6)", "rgba(255, 127, 14, 0.6)",
                "rgba(44, 160, 44, 0.6)", "rgba(44, 160, 44, 0.6)",
                "rgba(44, 160, 44, 0.6)", "rgba(214, 39, 40, 0.6)",
                "rgba(214, 39, 40, 0.6)"]
)

# Update layout for better presentation
fig.update_layout(
    title="Annual Budget Allocation",
    font=dict(size=16, family="Arial Black", color="black"),
    width=900,
    height=600
)

Étape 4 : affichage et export

Affichez votre diagramme et enregistrez-le dans différents formats selon l'usage.

fig.show()  # Display in Jupyter notebook or browser

# Export options
fig.write_html("budget_sankey.html")  # Interactive web version
fig.write_image("budget_sankey.png")  # Static image

Pour des applications web, vous pouvez intégrer ce graphique directement dans des applications Dash, et ainsi l'inclure dans des tableaux de bord interactifs. La visualisation obtenue correspond exactement à celle présentée en introduction. Nous proposons un excellent tutoriel pas à pas pour Build Dashboards with Plotly and Dash afin que vous testiez vous-même cette approche.

Diagramme de Sankey en R

R propose d'excellentes capacités pour créer des diagrammes de Sankey via le package networkD3, qui génère des visualisations interactives prêtes pour le web. Avec nos données budgétaires familières, nous allons montrer comment R produit des résultats professionnels avec des fonctionnalités d'interactivité intégrées.

Le package networkD3 est conçu pour créer, en R, des visualisations de réseaux propulsées par D3.js, y compris des diagrammes de Sankey. Cette approche offre plusieurs avantages : interactivité automatique (survol, zoom), intégration aisée dans des rapports R Markdown et export web sans friction.

Étape 1 : installation et préparation des données

Installez et chargez d'abord les packages nécessaires, puis structurez vos données au format attendu par networkD3.

# Install required packages (run once)
install.packages(c("networkD3", "dplyr"))

# Load libraries
library(networkD3)
library(dplyr)

# Create nodes dataframe
nodes <- data.frame(
  name = c("Annual Budget", "Marketing", "Operations", "R&D",
           "Digital Ads", "Events", "Content", "Salaries", 
           "Office", "Utilities", "Software", "Equipment")
)

# Create links dataframe (note: networkD3 uses 0-based indexing)
links <- data.frame(
  source = c(0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3),
  target = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11),
  value = c(40, 35, 25, 25, 10, 5, 20, 10, 5, 15, 10)
)

La différence clé avec Python est que R requiert des dataframes séparés pour les nœuds et les liens, et que le dataframe des liens utilise un indexage commençant à zéro pour référencer les positions des nœuds.

Étape 2 : création de base

Créez votre diagramme avec la fonction sankeyNetwork() en fournissant les paramètres essentiels.

# Create basic Sankey diagram
sankey_plot <- sankeyNetwork(
  Links = links,
  Nodes = nodes,
  Source = "source",
  Target = "target", 
  Value = "value",
  NodeID = "name",
  units = "K USD"
)

# Display the plot
Sankey_plot

Cela génère un diagramme de Sankey interactif : l'utilisateur peut survoler les flux pour voir les valeurs exactes et déplacer les nœuds pour réorganiser la mise en page.

Étape 3 : personnalisation et style

Enrichissez votre diagramme avec des couleurs, des dimensions adaptées et un formatage professionnel.

# Advanced Sankey with customization
(sankey_advanced <- sankeyNetwork(
  Links = links,
  Nodes = nodes,
  Source = "source",
  Target = "target",
  Value = "value",
  NodeID = "name",
  units = "K USD",
  fontSize = 14,
  fontFamily = "Arial",
  nodeWidth = 30,
  nodePadding = 20,
  margin = list(top = 50, right = 50, bottom = 50, left = 50),
  height = 600,
  width = 900
))

Étape 4 : export et intégration

Avec R, il est facile d'enregistrer vos diagrammes interactifs sous plusieurs formats et de les intégrer à des rapports.

# Save as HTML file
library(htmlwidgets)
saveWidget(sankey_advanced, "budget_sankey.html", selfcontained = TRUE)

# For R Markdown integration, simply include the plot object
# The diagram will render as an interactive widget in your document

# For static image export (optional - requires webshot2 package)
install.packages("webshot2")
library(webshot2)

webshot("budget_sankey.html", "budget_sankey.png", vwidth = 900, vheight = 600)

Diagramme de Sankey interactif créé avec le package networkD3 de R. Image de l'auteur. 

Le diagramme obtenu fournit les mêmes enseignements visuels que nos versions Python et Excel, tout en offrant une interactivité intégrée qui facilite l'exploration des données.

Alternatives et comparaisons au diagramme de Sankey

Les diagrammes de Sankey sont particulièrement adaptés lorsque vous disposez de relations directionnelles claires entre des catégories et que l'ampleur des flux compte davantage que des comparaisons très précises. Toutefois, certains cas appellent d'autres approches de visualisation.

Quand éviter les diagrammes de Sankey

Évitez-les lorsqu'il n'y a pas de flux directionnel entre vos catégories. Si vos données se contentent de présenter des groupes sans mouvement entre eux, des diagrammes en barres ou en secteurs seront plus clairs. Par exemple, comparer les parts de marché de différentes entreprises n'implique pas de flux : un graphique en barres sera plus pertinent.

Écartez-les si vous avez besoin de comparaisons numériques précises. Les diagrammes de Sankey montrent très bien les ordres de grandeur, mais la variation de largeur rend difficile l'extraction de valeurs exactes. Si vos parties prenantes doivent comparer précisément des pourcentages ou des montants, privilégiez tableaux ou diagrammes en barres.

Optez pour des alternatives si vos données deviennent trop complexes et surchargent le diagramme. Au-delà de 10 à 15 nœuds ou avec des flux très interconnectés, un Sankey peut devenir illisible : croisements et superpositions compliquent le suivi des parcours.

Choisissez des visuels plus simples si votre public n'est pas familier avec les diagrammes de Sankey. Moins répandus que les barres ou les courbes, ils peuvent détourner l'attention vers le décodage du format plutôt que l'interprétation des données. Pour des audiences généralistes, privilégiez des graphiques connus sauf si la notion de flux est essentielle à votre message.

Meilleures alternatives selon les cas

Diagrammes alluviaux : plus adaptés pour des flux catégoriels ou temporels lorsque vous suivez des changements sur plusieurs périodes ou étapes. Alors que les Sankey montrent des quantités à un instant donné, les alluviaux excellent pour visualiser l'évolution de catégories. Par exemple, suivre les déplacements d'électeurs entre partis sur plusieurs élections, ou les changements de spécialité d'étudiants au fil des années, relève davantage de l'alluvial que du Sankey.

Graphiques en coordonnées parallèles : plus indiqués pour comparer des données multivariées et repérer des motifs sur plusieurs dimensions simultanément. Ils conviennent lorsque chaque observation a de nombreuses variables et que vous cherchez des clusters ou des valeurs atypiques. Par exemple, comparer des voitures selon le prix, la consommation, la sécurité et les performances fonctionne mieux en coordonnées parallèles que dans un format de flux.

Bump charts : gèrent plus efficacement les évolutions de rang dans le temps que les Sankey ou les alluviaux. Pour montrer comment des entités montent ou descendent dans un classement au fil des périodes, ils tracent clairement la trajectoire sans la complexité visuelle des flux. Pensez au suivi des positions de marché d'entreprises par trimestre ou des classements d'équipes sportives par saison.

Pour aller plus loin, lisez notre article de blog Top 5 Business Intelligence Courses to Take on DataCamp, qui vous guide pour monter en compétences sur les principaux outils de BI.

Conclusion

La réussite d'une visualisation dépend du bon choix d'outil pour votre contexte. Utilisez les diagrammes de Sankey lorsque les relations de flux directionnels priment sur des comparaisons numériques exactes, et lorsque votre audience doit identifier rapidement les flux les plus significatifs d'un système.

Si vous souhaitez élargir votre champ au-delà des diagrammes de Sankey, notre article 10 Data Visualization Project Ideas for All Levels propose des projets pratiques de différents niveaux de complexité pour étoffer votre portfolio de visualisation. Ces projets vous aident à développer votre esprit critique et à constituer des preuves concrètes de vos compétences en visualisation de données.

FAQs

Quelle est la différence entre un diagramme de Sankey et un organigramme&nbsp;?

Alors que les organigrammes décrivent des étapes et des points de décision, les diagrammes de Sankey visualisent spécifiquement la circulation et la quantité de ressources, d'énergie ou de données entre différentes étapes. La largeur des flèches dans un Sankey est proportionnelle aux valeurs mesurées, tandis que les organigrammes s'attachent à la logique du processus plutôt qu'aux quantités.

Quel type de données se prête le mieux aux diagrammes de Sankey&nbsp;?

Les diagrammes de Sankey conviennent le mieux à des données basées sur des flux montrant un mouvement ou une transformation d'une étape à une autre, comme la distribution d'énergie, les entonnoirs de conversion web, les flux de chaîne d'approvisionnement ou les allocations budgétaires. Ils ne sont pas adaptés aux données purement catégorielles ou aux jeux de données sans relation directionnelle entre variables.

Quels bons outils en ligne permettent de créer des diagrammes de Sankey sans coder&nbsp;?

Pour celles et ceux qui préfèrent des solutions web, SankeyMATIC offre une interface gratuite et simple pour des diagrammes de base, tandis que Flourish propose des fonctionnalités plus avancées et de l'interactivité pour des présentations professionnelles. Google Charts et Highcharts sont d'excellents choix pour les développeurs qui souhaitent intégrer des diagrammes de Sankey dans des sites web, et Visual Paradigm propose des capacités de modélisation complètes au sein d'une suite d'outils métier plus large.

Quand faut-il éviter un diagramme de Sankey&nbsp;?

Évitez les diagrammes de Sankey lorsque vous avez besoin de comparaisons numériques précises (la largeur des flux étant difficile à mesurer exactement), lorsque vos données comportent trop de catégories et créent de l'encombrement visuel, ou lorsqu'il n'y a pas de flux directionnel réel entre les points de données. Songez aussi à des alternatives plus simples si votre audience n'est pas familière avec ce type de visualisation, au risque que la nouveauté prenne le pas sur le message.

Comment gérer des valeurs négatives ou des pertes dans un diagramme de Sankey&nbsp;?

Les diagrammes de Sankey n'affichent généralement pas de valeurs négatives directement, puisque la largeur des flèches représente des quantités positives. Représentez plutôt les pertes comme des flux sortants distincts depuis les nœuds, ou utilisez des flux de déperdition qui ne se connectent pas à des nœuds cibles pour matérialiser le gaspillage ou les ressources perdues.

Quelle est la différence entre les diagrammes de Sankey et alluviaux&nbsp;?

Les diagrammes de Sankey se concentrent sur les quantités de flux à un instant donné, tandis que les diagrammes alluviaux montrent comment des catégories évoluent sur plusieurs périodes ou étapes. Les alluviaux sont donc préférables pour suivre des migrations, des changements de catégorie ou des évolutions dans le temps.

Sujets

Learn with DataCamp

Cours

Simulation statistique en Python

4 h
19.8K
Apprenez à résoudre des problèmes de plus en plus complexes en utilisant des simulations pour générer et analyser des données.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Contenus associés

blog

Architecture de l'entrepôt de données : Tendances, outils et techniques

Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Kurtis Pykes 's photo

Kurtis Pykes

15 min

Tutoriel

Tableaux Python

Tableaux Python avec exemples de code. Découvrez comment créer et imprimer des tableaux à l'aide de Python NumPy dès aujourd'hui.
DataCamp Team's photo

DataCamp Team

Tutoriel

Séquence de Fibonacci en Python : Apprenez et explorez les techniques de codage

Veuillez découvrir le fonctionnement de la suite de Fibonacci. Veuillez explorer ses propriétés mathématiques et ses applications concrètes.
Laiba Siddiqui's photo

Laiba Siddiqui

Tutoriel

Tutoriel sur les boucles « for » en Python

Apprenez à implémenter des boucles « for » en Python pour itérer une séquence ou les lignes et colonnes d'un DataFrame pandas.
Aditya Sharma's photo

Aditya Sharma

Tutoriel

Tutoriel Python sur les structures de données

Initiez-vous aux structures de données de Python : apprenez-en plus sur les types de données et les structures de données primitives et non primitives, telles que les chaînes de caractères, les listes, les piles, etc.
Sejal Jaiswal's photo

Sejal Jaiswal

Tutoriel

Données JSON Python : Un guide illustré d'exemples

Apprenez à utiliser JSON en Python, notamment la sérialisation, la désérialisation, le formatage, l'optimisation des performances, la gestion des API, ainsi que les limites et les alternatives de JSON.
Moez Ali's photo

Moez Ali

Voir plusVoir plus