Cuando los clientes se dividen en acciones distintas, el Sankey hace el flujo facil de seguir. Para explorar de forma interactiva, go.Sankey de Plotly es muy util. Puedes ver el volumen al pasar el mouse y compartirlo como HTML.
import plotly.graph_objects as go
labels = [
"Entrada",
"Registro gratis",
"Abandono de carrito",
"Visita a FAQ",
"Rebote",
"Conversion paga",
"Visita recurrente",
"Baja",
]
sources = [0, 0, 0, 0, 1, 1, 1]
targets = [1, 2, 3, 4, 5, 6, 7]
values = [420, 280, 200, 100, 260, 100, 60]
fig = go.Figure(
data=[
go.Sankey(
arrangement="snap",
node=dict(
pad=18,
thickness=18,
line=dict(color="rgba(0,0,0,0.2)", width=1),
label=labels,
color=[
"#4C78A8",
"#F58518",
"#E45756",
"#72B7B2",
"#54A24B",
"#EECA3B",
"#B279A2",
"#FF9DA6",
],
),
link=dict(
source=sources,
target=targets,
value=values,
color=[
"rgba(76,120,168,0.45)",
"rgba(229,87,86,0.45)",
"rgba(114,183,178,0.45)",
"rgba(84,162,75,0.45)",
"rgba(245,133,24,0.45)",
"rgba(238,202,59,0.45)",
"rgba(178,121,162,0.45)",
],
),
)
]
)
fig.update_layout(
title=dict(text="Flujo de clientes tras la visita (Plotly Sankey)", x=0.5, font=dict(size=18)),
font=dict(size=12, color="#222"),
margin=dict(l=10, r=10, t=40, b=10),
)
# HTML interactivo para compartir en navegador
fig.write_html("static/images/visualize/advanced/sankey-diagram.html", include_plotlyjs="cdn")
# Imagen estatica para documentos (requiere kaleido: pip install kaleido)
fig.write_image("static/images/visualize/advanced/sankey-diagram.png", scale=2)
plt.show()

Consejos de lectura #
- El grosor indica el volumen, asi se detectan caidas grandes.
- Sigue las ramas para encontrar cuellos de botella hasta la conversion.
- Si hay demasiadas ramas, enfoca en las rutas principales.