Sankey Diagram
Sankey Diagram
Qué es
Flujos representados por flechas o bandas cuyo grosor es proporcional a la cantidad que fluye. Los nodos son categorías y las bandas son las transferencias entre ellas.
Para qué sirve
Para mostrar cómo una cantidad se distribuye o transforma a través de etapas o categorías, cuando las magnitudes de los flujos importan.
Cómo leerlo
Anatomía
El diagrama que hoy conocemos con este nombre se popularizó a fines del siglo XIX, comparando la eficiencia térmica de una máquina real contra una ideal, y ganó adopción más amplia ya en el siglo XX al aplicarse a sistemas de energía y flujo de materiales, especialmente en contextos donde escaseaban los recursos y hacía falta visualizar con precisión dónde se perdía eficiencia. El principio de ancho proporcional al flujo tiene antecedentes cartográficos incluso anteriores, aplicados a mapas de rutas comerciales y militares, aunque sin la estructura de nodos y ramificaciones que define a este formato propiamente tal. La propiedad que ningún otro gráfico de flujo de este catálogo comparte con tanta exactitud es la conservación estricta: la suma del ancho de las bandas que salen de un nodo es exactamente igual al ancho del nodo mismo, no una aproximación visual sino una restricción matemática del layout —a diferencia de un treemap, donde el área codifica la proporción de un todo estático, no un flujo que se conserva de una etapa a la siguiente.
Por qué funciona
Fundamento perceptivo
Es el único gráfico que muestra simultáneamente origen, destino y magnitud de múltiples flujos. El grosor hace que las cantidades sean inmediatamente comparables.
Errores comunes
Ilegible con muchos nodos
con más de 8-10 nodos y muchas conexiones cruzadas se satura, así que ordena los nodos para minimizar cruces y agrupa categorías pequeñas en 'Otros'.
Dónde se usa
Contextos de aplicación

Flujos de carga entre puertos
El ancho de cada banda es el volumen que se mueve por esa ruta.

Distribución del presupuesto por etapas
Del total a los programas: cada peso se sigue por su banda.

Recorrido de usuarios en un sitio
De la portada a la conversión: dónde se bifurca y dónde se pierde el flujo.
Cómo construirlo
El mismo gráfico, en 11 librerías open source
Cada librería resuelve las mismas decisiones de diseño, como la escala, el espaciado entre barras o la inserción de la etiqueta de valor, de un modo distinto. Algunas las automatizan; otras las dejan explícitas en el código, a criterio de quien lo escribe. Comparar once implementaciones con los mismos datos y el mismo color de marca aísla esa diferencia, que de otro modo queda oculta detrás de estilos visuales distintos.
A quién le vende Chile su cobre, con más detalle
Fuente: BCN, en base a Cochilco (2025a), BCCh y Aduanas
Exportaciones de cobre chileno 2024 por destino, en millones de US$ (mismos datos que el ejemplo principal de esta ficha): BCN, en base a Cochilco (2025a), BCCh y Aduanas. ECharts y Plotly tienen un tipo Sankey nativo que calcula solo el layout (columnas, apilado por valor, bandas curvas); las demás 7 necesitan esa geometría ya resuelta a mano, sin el paquete d3-sankey (no instalado en este proyecto). Sin función Sankey nativa: matplotlib solo dibuja Rectangle para los nodos y PathPatch (curvas Bézier) para las bandas de flujo, con el layout ya resuelto a mano.
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from matplotlib.path import Path
# Sin funcion Sankey nativa: el layout (columnas, apilado por valor,
# bandas curvas) viene ya resuelto a mano -- matplotlib solo dibuja
# Rectangle para los nodos y PathPatch (curvas Bezier) para las bandas.
for l in bandas:
verts = [(l["sx"], l["sy0"]), (mx, l["sy0"]), (mx, l["ty0"]), (l["tx"], l["ty0"]), ...]
ax.add_patch(patches.PathPatch(Path(verts, codes), facecolor="#760D3E", alpha=0.35))
for n in nodos:
ax.add_patch(patches.Rectangle((n["x"], n["y0"]), 16, n["y1"] - n["y0"], facecolor=n["color"]))
plt.show()No disponible en estas librerías
No tiene un tipo Sankey nativo ni una API de bajo nivel accesible desde fuera para dibujar bandas de flujo a mano.
No tiene un mark Sankey ni un mark de "link"/banda de ancho variable —esa capacidad de bajo nivel existe en Vega (la librería completa de la que Vega-Lite es un subconjunto simplificado), no en Vega-Lite.
Herramientas para construirlo
No-code, desktop y plataformas web, con su licencia visible, abierta o comercial.
Términos relacionados
Con datos reales
Ejemplos de uso.
A quién le vende Chile su cobre, con más detalle
Exportaciones de cobre 2024 por destino (millones de US$).
Gráficos relacionados