Ketika pelanggan bercabang ke aksi berbeda, diagram Sankey memudahkan mengikuti alurnya. Untuk eksplorasi interaktif, go.Sankey dari Plotly sangat membantu. Volume alur bisa dilihat saat hover dan bisa dibagikan sebagai HTML.
import plotly.graph_objects as go
labels = [
"Masuk",
"Daftar gratis",
"Batal keranjang",
"Lihat FAQ",
"Bounce",
"Konversi berbayar",
"Kunjungan ulang",
"Churn",
]
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="Alur pelanggan setelah kunjungan (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 interaktif untuk dibagikan via browser
fig.write_html("static/images/visualize/advanced/sankey-diagram.html", include_plotlyjs="cdn")
# Gambar statis untuk dokumen (butuh kaleido: pip install kaleido)
fig.write_image("static/images/visualize/advanced/sankey-diagram.png", scale=2)
plt.show()

Kiat membaca #
- Ketebalan band menunjukkan volume, sehingga penurunan besar mudah terlihat.
- Ikuti cabang untuk melacak bottleneck hingga hasil tertentu (misalnya konversi berbayar).
- Jika percabangan terlalu banyak, fokuskan pada jalur utama.