Cours
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.

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 ?
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 ?
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 ?
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 ?
É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 ?
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 ?
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.
