Alluvial Diagram

Alluvial Diagram

Categoría Flujo

Qué es

Variante del Sankey para datos categóricos en múltiples momentos del tiempo. Muestra cómo los individuos o grupos se redistribuyen entre categorías a lo largo del tiempo.

Para qué sirve

Para mostrar cómo cambia la distribución de una población entre categorías en múltiples períodos (flujo de personas, no solo cantidades).

Cómo leerlo

Anatomía

Este formato se formalizó en investigación de redes de comienzos de la década de 2010, como herramienta para visualizar cómo se reorganizan los clusters de una red a lo largo del tiempo. El nombre es una metáfora geológica deliberada: como un abanico aluvial que un río forma al depositar sedimento donde pierde velocidad, el diagrama muestra cómo un conjunto de elementos se "deposita" en distintos grupos a medida que avanza de una etapa a la siguiente. Se ha usado, por ejemplo, para estudiar cómo el patrón de citas entre miles de revistas científicas revela la aparición de nuevas disciplinas a lo largo de varias décadas. Cada columna es una foto completa de un momento, no una etapa de proceso como en un sankey; una banda que conecta dos columnas sigue al mismo conjunto de elementos, y suelen ordenarse de mayor a menor tamaño para que fusiones y divisiones grandes salten a la vista.

Vista aérea de una red de canales de agua sobre un pastizal, que se dividen y se vuelven a juntar varias veces a lo largo de su recorrido: la misma anatomía de un alluvial diagram, donde los flujos se bifurcan y confluyen entre categorías a lo largo de distintas etapas

Por qué funciona

Fundamento perceptivo

A diferencia del Sankey, el Alluvial tiene un eje temporal explícito. Los 'aluviones' entre columnas muestran la redistribución de forma muy intuitiva.

Errores comunes

  • Fácil de confundir con Sankey

    si no se distingue claramente, el eje temporal debe estar explícitamente etiquetado con las fechas o condiciones de cada columna.

Dónde se usa

Contextos de aplicación

Migración de clientes entre planes
01

Migración de clientes entre planes

Cómo se redistribuyen los clientes de un período al siguiente.

Cambio de preferencia entre elecciones
02

Cambio de preferencia entre elecciones

Las bandas muestran cuánto electorado cambió de opción entre votaciones.

Evolución de cohortes de usuarios
03

Evolución de cohortes de usuarios

Cada cohorte fluye entre estados: activo, inactivo, recuperado.

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.

De qué viven las exportaciones chilenas, en tres niveles

Fuente: Banco Central de Chile, cifras de comercio exterior 2024

Matplotlib License (estilo BSD)
Matplotlib: gráfico de barras

Exportaciones de Chile 2024 por categoría, en tres niveles (mismos datos que el ejemplo principal de esta ficha): Banco Central de Chile, cifras de comercio exterior 2024. Un alluvial diagram es, en términos de renderizado, un Sankey de varios niveles —las mismas librerías con soporte nativo (ECharts, Plotly) y las mismas siete sin él se reutilizan tal cual, ver sankey-diagram para el detalle técnico completo de cada una. Sin función nativa: matplotlib solo dibuja Rectangle para los nodos y PathPatch (curvas bézier) para las bandas, con el layout ya resuelto a mano.

import matplotlib.pyplot as plt
import matplotlib.patches as patches
from matplotlib.path import Path

# Mismo principio que sankey-diagram: sin funcion nativa, la geometria
# ya viene resuelta a mano -- Rectangle para los nodos y PathPatch
# (curvas Bezier) para las bandas.
for l in bandas:
    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

ApexCharts

No tiene un tipo alluvial/Sankey nativo ni una API de bajo nivel accesible desde fuera para dibujar bandas de flujo a mano.

Vega-Lite

No tiene un mark alluvial/Sankey ni un mark de "link"/banda de ancho variable —esa capacidad de bajo nivel existe en Vega, no en Vega-Lite.

Herramientas para construirlo

No-code, desktop y plataformas web, con su licencia visible, abierta o comercial.

No-code
Flourish FreemiumRAWGraphs GratisObservable Freemium
JavaScript
D3.js Open SourceECharts Open Source
Python
Plotly Open Source
R
ggalluvial Open Source

Con datos reales

Ejemplos de uso.

De qué viven las exportaciones chilenas, en tres niveles

Exportaciones de Chile 2024 por categoría (millones de US$).

Fuente: Banco Central de Chile, cifras de comercio exterior 2024

Gráficos relacionados

Variantes y alternativas cercanas.