Kursus
Keindahan diagram Sankey terletak pada kemampuannya menyederhanakan sistem multi-tahap. Alih-alih menelusuri baris data untuk menemukan kehilangan energi terbesar atau alokasi anggaran, Anda dapat menemukannya seketika dengan melihat aliran yang paling tebal. Ini menjadikannya berguna untuk manajemen energi, analisis keuangan, optimalisasi marketing funnel, dan situasi apa pun di mana memahami aliran serta transformasi sumber daya lebih penting daripada perbandingan angka yang presisi.
Bagi Anda yang ingin memperluas kemampuan analitik di luar visualisasi aliran, kursus Data Visualization in Power BI dan kursus Data Visualization in Tableau kami mengajarkan cara membuat dasbor profesional dan laporan interaktif menggunakan platform business intelligence terkemuka.
Apa Itu Diagram Sankey?
Diagram Sankey adalah visualisasi aliran khusus di mana lebar panah penghubung mewakili besarnya aliran antara berbagai tahap, kategori, atau entitas. Berbeda dengan flowchart tradisional yang menampilkan langkah proses atau bagan batang yang membandingkan nilai diskret, diagram Sankey unggul dalam menunjukkan bagaimana kuantitas bergerak, berubah, atau didistribusikan melalui suatu sistem.

Komponen diagram Sankey ditampilkan. Gambar oleh Penulis.
Diagram di atas mengilustrasikan bagaimana anggaran tahunan sebesar $100.000 mengalir melalui berbagai kategori. Perhatikan bagaimana alokasi Marketing ($40.000) tampak sebagai aliran yang terlihat lebih tebal dibandingkan R&D ($25.000), sehingga perbedaan proporsional langsung terlihat jelas.
Sejarah dan evolusi diagram Sankey
Diagram Sankey pertama yang diketahui muncul pada tahun 1898 ketika Kapten Matthew Henry Phineas Riall Sankey menggunakannya untuk menunjukkan efisiensi energi mesin uap. Diagramnya mengungkapkan bahwa hanya sebagian kecil energi bahan bakar yang benar-benar berkontribusi pada kerja yang bermanfaat, sementara sebagian besar hilang sebagai panas terbuang.

Namun, konsep visualisasi aliran proporsional sudah ada sebelum Kapten Sankey. Charles Joseph Minard menciptakan apa yang dianggap banyak orang sebagai diagram aliran paling terkenal pada tahun 1869, yang menggambarkan kampanye Rusia 1812 yang berujung malapetaka oleh Napoleon. Diagram Minard menunjukkan ukuran pasukan yang menyusut saat maju ke Rusia dan kemudian mundur, dengan ketebalan garis mewakili jumlah prajurit yang masih hidup.

Komponen diagram Sankey
Memahami elemen kunci diagram Sankey membantu Anda menafsirkan diagram yang ada sekaligus membuat diagram sendiri secara efektif.
- Node merepresentasikan kategori, tahap, atau entitas dalam sistem Anda. Pada contoh anggaran, "Annual Budget," "Marketing," dan "Digital Ads" semuanya adalah node. Node sumber (seperti "Annual Budget") biasanya muncul di sebelah kiri, sementara node target (seperti "Digital Ads") muncul di sebelah kanan, meskipun ini dapat bervariasi tergantung preferensi tata letak Anda.
- Aliran atau tautan adalah penghubung berarah antar node, dan lebarnya proporsional dengan nilai yang diwakilinya. Aliran oranye tebal dari Annual Budget ke Marketing mewakili $40.000, sedangkan aliran yang jauh lebih tipis ke Content hanya mewakili $5.000. Lebar proporsional inilah ciri khas yang membuat diagram Sankey sangat efektif menyoroti perbedaan besaran.
- Nilai adalah data numerik yang menentukan lebar setiap aliran. Ini bisa mewakili uang, energi, material, orang, atau sumber daya terukur apa pun yang bergerak melalui sistem Anda. Diagram secara otomatis menghitung lebar yang sesuai berdasarkan nilai-nilai ini untuk memastikan akurasi visual.
- Drop-off adalah aliran khusus yang merepresentasikan kerugian, limbah, atau sumber daya yang keluar dari sistem tanpa mencapai node target. Meskipun contoh anggaran kita tidak menampilkan drop-off, Anda mungkin melihatnya pada diagram energi yang menunjukkan kehilangan panas atau pada marketing funnel yang menunjukkan pelanggan yang menghentikan proses.
Cara Membuat Diagram Sankey
Membuat diagram Sankey memerlukan pendekatan berbeda tergantung pada alat pilihan dan tingkat kenyamanan teknis Anda. Kita akan menelusuri contoh alokasi anggaran yang sama menggunakan Excel, Python, dan R, sehingga Anda dapat memilih metode yang paling sesuai dengan alur kerja dan keahlian Anda.
Diagram Sankey di Excel
Excel tidak menyertakan tipe bagan Sankey bawaan, yang berarti Anda perlu menggunakan add-in pihak ketiga untuk membuat visualisasi ini. Berdasarkan pengalaman saya, ChartExpo adalah salah satu opsi yang paling populer dan mudah digunakan.
Antarmuka ChartExpo dan pratinjau diagram Sankey. Gambar oleh Penulis.
Sebelum membuat diagram, Anda perlu menyusun data dalam format source-target-value di mana setiap baris merepresentasikan satu koneksi aliran. Untuk contoh anggaran kita, ini berarti mencantumkan setiap alokasi anggaran sebagai baris terpisah dengan kategori sumber, kategori target, dan jumlah dolar.
Prosesnya cukup mudah setelah Anda memasang ChartExpo. Pertama, pasang add-in dari Microsoft AppSource atau melalui marketplace add-in Excel. Lalu, pilih rentang data Anda termasuk header dan pilih Sankey Chart dari opsi visualisasi ChartExpo.
Add-in secara otomatis mendeteksi kolom sumber, target, dan nilai berdasarkan struktur data Anda. Seperti terlihat pada antarmuka di atas, ChartExpo menyediakan pratinjau diagram Anda beserta opsi untuk Create Chart From Selection, menyesuaikan visualisasi, atau mengekspor bagan yang sudah jadi untuk digunakan dalam presentasi atau laporan.
Diagram Sankey di Python
Python menawarkan opsi yang sangat baik untuk membuat diagram Sankey, dengan Plotly sebagai pustaka yang paling direkomendasikan karena kemampuan interaktifnya dan kualitas output profesional. Menggunakan contoh alokasi anggaran yang sama seperti sebelumnya, kita akan membuat ulang visualisasi identik tersebut melalui kode.
Langkah 1: Persiapan data
Mulailah dengan mengatur data ke format yang diharapkan Plotly. Anda memerlukan tiga komponen utama: daftar nama node, dan array yang menentukan indeks sumber, indeks target, serta nilai untuk setiap aliran.
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]
Indeks tersebut sesuai dengan posisi dalam daftar nodes Anda, sehingga source_indices = [0, 0, 0] berarti tiga aliran pertama berasal dari "Annual Budget" (posisi 0).
Langkah 2: Pembuatan Sankey dasar
Buat struktur diagram inti menggunakan objek Sankey dari Plotly. Parameter pentingnya adalah definisi node dan spesifikasi link.
fig = go.Figure(data=[go.Sankey(
node=dict(
label=nodes,
pad=15,
thickness=20
),
link=dict(
source=source_indices,
target=target_indices,
value=values
)
)])
Ini membuat diagram Sankey yang fungsional dengan gaya default. pad mengatur jarak antar node, sedangkan thickness menentukan seberapa lebar persegi panjang node ditampilkan.
Langkah 3: Gaya dan kustomisasi
Perkaya diagram Anda dengan warna, tata letak yang lebih baik, dan pemformatan profesional.
# 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
)
Langkah 4: Tampilkan dan ekspor
Tampilkan diagram Anda dan simpan dalam berbagai format untuk beragam penggunaan.
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
Untuk aplikasi web, Anda dapat mengintegrasikannya langsung ke dalam aplikasi Dash, menjadikan diagram Sankey sebagai bagian dari dasbor interaktif. Visualisasi yang dihasilkan persis seperti yang kita lihat pada visual pembuka. Kami memiliki sesi code-along yang bagus yang mengajarkan cara Membangun Dasbor dengan Plotly dan Dash sehingga Anda bisa mencoba ide ini sendiri.
Diagram Sankey di R
R menyediakan kemampuan yang sangat baik untuk membuat diagram Sankey melalui paket networkD3, yang menghasilkan visualisasi interaktif siap web. Menggunakan data alokasi anggaran yang sudah familier, kami akan menunjukkan bagaimana R dapat menghasilkan hasil profesional yang sama dengan fitur interaktivitas bawaan.
Paket networkD3 dirancang khusus untuk membuat visualisasi jaringan bertenaga D3.js di R, termasuk diagram Sankey. Pendekatan ini menawarkan beberapa keunggulan: interaktivitas otomatis (efek hover, zoom), integrasi mudah dengan laporan R Markdown, serta opsi ekspor yang mulus untuk penayangan web.
Langkah 1: Penyiapan dan persiapan data
Pertama, pasang dan muat paket yang diperlukan, lalu susun data Anda ke format yang diharapkan 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)
)
Perbedaan utama dari Python adalah R memerlukan dataframe terpisah untuk nodes dan links, dengan dataframe links menggunakan penomoran indeks berbasis nol untuk merujuk posisi node.
Langkah 2: Pembuatan Sankey dasar
Buat diagram menggunakan fungsi sankeyNetwork() dengan parameter penting.
# 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
Ini menghasilkan diagram Sankey interaktif di mana pengguna dapat mengarahkan kursor pada aliran untuk melihat nilai tepatnya dan menyeret node untuk menata ulang tata letak.
Langkah 3: Kustomisasi dan styling
Perkaya diagram Anda dengan warna, pengaturan ukuran, dan opsi pemformatan profesional.
# 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
))
Langkah 4: Opsi ekspor dan integrasi
R memudahkan untuk menyimpan diagram interaktif Anda dalam berbagai format dan mengintegrasikannya ke dalam laporan.
# 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)
Diagram Sankey interaktif dibuat dengan paket networkD3 di R. Gambar oleh Penulis.
Diagram yang dihasilkan memberikan wawasan visual yang sama seperti versi Python dan Excel, namun dengan interaktivitas bawaan yang membantu pengguna mengeksplorasi data lebih menyeluruh.
Alternatif dan Perbandingan Diagram Sankey
Diagram Sankey bekerja paling baik ketika Anda memiliki hubungan berarah yang jelas antar kategori, di mana besarnya aliran lebih penting daripada perbandingan yang presisi. Namun, beberapa situasi membutuhkan pendekatan visualisasi yang berbeda.
Kapan sebaiknya tidak menggunakan diagram Sankey
Hindari diagram Sankey ketika tidak ada aliran berarah antar kategori Anda. Jika data Anda hanya menunjukkan kelompok atau klasifikasi berbeda tanpa perpindahan di antaranya, bagan batang atau pai akan menyampaikan pesan Anda dengan lebih jelas. Misalnya, membandingkan pangsa pasar antar perusahaan tidak melibatkan aliran, sehingga bagan batang lebih tepat.
Lewati diagram ini saat Anda membutuhkan perbandingan angka yang presisi. Walau diagram Sankey efektif menunjukkan besaran relatif, variasi lebar membuat pembaca sulit mengekstrak nilai tepat atau melakukan perbandingan mendetail. Jika pemangku kepentingan perlu membandingkan persentase atau jumlah spesifik secara akurat, tabel atau bagan batang lebih cocok.
Pertimbangkan alternatif ketika data Anda menjadi terlalu kompleks dan membuat diagram berantakan. Dengan lebih dari 10–15 node atau aliran yang sangat saling terhubung, diagram Sankey bisa menjadi terlalu ramai secara visual. Garis yang berpotongan dan aliran yang tumpang tindih menyulitkan pelacakan jalur individual melalui sistem.
Pilih visualisasi yang lebih sederhana saat audiens Anda tidak terbiasa dengan diagram Sankey. Karena diagram ini lebih jarang digunakan dibanding bagan batang atau garis, sebagian audiens mungkin lebih fokus memahami format daripada menafsirkan data Anda. Dalam presentasi kepada audiens umum, gunakan tipe bagan yang familier kecuali hubungan aliran merupakan inti pesan Anda.
Alternatif yang lebih baik untuk skenario tertentu
Diagram aluvial lebih baik untuk aliran kategorikal atau berbasis waktu saat Anda melacak perubahan di beberapa periode atau tahap. Sementara diagram Sankey menunjukkan kuantitas yang mengalir melalui sistem pada satu titik waktu, diagram aluvial unggul dalam menunjukkan bagaimana data kategorikal berkembang. Misalnya, melacak bagaimana pemilih berpindah antar partai politik di beberapa pemilu, atau bagaimana mahasiswa berganti jurusan sepanjang masa kuliah, lebih cocok menggunakan diagram aluvial daripada diagram Sankey.
Plot koordinat paralel lebih baik untuk membandingkan data multivariat ketika Anda ingin melihat pola di banyak dimensi sekaligus. Ini bekerja baik saat Anda memiliki banyak variabel untuk setiap titik data dan ingin mengidentifikasi klaster atau outlier. Misalnya, membandingkan mobil berdasarkan harga, efisiensi bahan bakar, peringkat keselamatan, dan metrik performa lebih baik menggunakan koordinat paralel daripada memaksakan hubungan tersebut ke format aliran.
Bump chart lebih efektif menangani perubahan peringkat dari waktu ke waktu dibandingkan diagram Sankey atau aluvial. Saat Anda menunjukkan bagaimana entitas berbeda naik atau turun peringkat sepanjang periode waktu, bump chart dengan jelas menunjukkan trajektori tanpa kompleksitas visual aliran. Contohnya melacak bagaimana posisi pasar perusahaan berubah per kuartal, atau bagaimana tim olahraga bergerak di klasemen liga sepanjang musim.
Untuk mempelajari lebih lanjut, baca postingan blog kami Top 5 Business Intelligence Courses to Take on DataCamp, yang memberikan panduan membangun keahlian dengan alat BI penting.
Kesimpulan
Keberhasilan visualisasi bergantung pada pemilihan alat yang tepat untuk situasi spesifik Anda. Gunakan diagram Sankey ketika hubungan aliran berarah lebih penting daripada perbandingan angka yang presisi, dan ketika audiens Anda perlu dengan cepat mengidentifikasi aliran paling signifikan dalam sebuah sistem.
Bagi pembaca yang ingin memperluas wawasan di luar diagram Sankey, postingan blog kami 10 Ide Proyek Visualisasi Data untuk Semua Tingkatan menyediakan saran proyek praktis di berbagai tingkat kompleksitas untuk membangun portofolio visualisasi Anda. Proyek-proyek ini membantu mengembangkan keterampilan berpikir kritis dan menciptakan bukti nyata atas kapabilitas visualisasi data Anda.
Vinod Chugani memulai kariernya di Tokyo sebagai Kepala Meja Penjualan Hedge Fund termuda di JPMorgan dan kemudian mencetak rekor penjualan individu di Lehman Brothers, lalu membangun bisnis distribusi elektronik di 30 negara dengan pendapatan melampaui SG$100 juta sebelum beralih ke data. Lulusan Ekonomi Duke dan alumni NYC Data Science Academy, ia menjadi salah satu dari tiga penerima beasiswa dari lebih dari 100 pelamar untuk kursus Building AI Applications oleh Hugo Bowne-Anderson di Maven. Saat ini, ia menulis untuk DataCamp, KDnuggets, Machine Learning Mastery, dan Statology tentang topik mulai dari statistika hingga AI agensial, dan membimbing para profesional data di NYC Data Science Academy dengan lebih dari 1.000 sesi tatap muka atas namanya.
FAQs
Apa perbedaan antara diagram Sankey dan flowchart?
Sementara flowchart menampilkan langkah proses dan titik keputusan, diagram Sankey secara khusus memvisualisasikan aliran dan kuantitas sumber daya, energi, atau data antar tahap yang berbeda. Lebar panah dalam diagram Sankey proporsional dengan nilai yang diukur, sedangkan flowchart berfokus pada logika proses, bukan kuantitas.
Jenis data apa yang paling cocok untuk diagram Sankey?
Diagram Sankey paling cocok untuk data berbasis aliran yang menunjukkan perpindahan atau transformasi dari satu tahap ke tahap lain, seperti distribusi energi, funnel konversi situs web, aliran rantai pasok, atau alokasi anggaran. Diagram ini tidak cocok untuk data yang sepenuhnya kategorikal atau set data tanpa hubungan berarah antar variabel.
Apa saja alat online yang bagus untuk membuat diagram Sankey tanpa coding?
Bagi pengguna yang menyukai solusi berbasis web, SankeyMATIC menawarkan antarmuka gratis dan sederhana untuk diagram dasar, sementara Flourish menyediakan fitur yang lebih canggih dan interaktivitas untuk presentasi profesional. Google Charts dan Highcharts sangat baik bagi pengembang yang ingin menyematkan diagram Sankey di situs web, dan Visual Paradigm menawarkan kemampuan diagram yang komprehensif sebagai bagian dari rangkaian alat bisnis yang lebih luas.
Kapan saya harus menghindari penggunaan diagram Sankey?
Hindari diagram Sankey ketika Anda memerlukan perbandingan numerik yang presisi (karena lebar aliran sulit diukur secara tepat), saat data Anda memiliki terlalu banyak kategori yang akan menciptakan kekacauan visual, atau ketika tidak ada aliran berarah di antara titik data Anda. Pertimbangkan juga alternatif yang lebih sederhana jika audiens Anda tidak familier dengan jenis visualisasi ini, karena kebaruannya bisa mengaburkan pesan Anda.
Bagaimana cara menangani nilai negatif atau kerugian dalam diagram Sankey?
Diagram Sankey biasanya tidak menampilkan nilai negatif secara langsung karena lebar panah mewakili kuantitas positif. Sebagai gantinya, tampilkan kerugian sebagai aliran keluar terpisah dari node, atau gunakan aliran drop-off yang tidak terhubung ke node target untuk merepresentasikan limbah atau sumber daya yang hilang.
Apa perbedaan antara diagram Sankey dan diagram Aluvial?
Diagram Sankey berfokus pada kuantitas aliran pada satu titik waktu, sedangkan diagram aluvial menunjukkan bagaimana data kategorikal berubah di banyak periode atau tahap. Diagram aluvial lebih baik untuk melacak migrasi, perubahan kategori, atau evolusi dari waktu ke waktu.

