Lewati ke konten utama

Cara Membuat Diagram Sankey di Excel, Python, dan R

Dari konsep dasar hingga implementasi lanjutan, pelajari membangun diagram Sankey yang efektif menggunakan alat populer. Temukan komponen kunci, praktik terbaik, dan prinsip desain yang membuat visualisasi aliran menarik dan informatif.
Diperbarui 5 Jun 2026  · 9 mnt baca

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.

the very first Sankey diagram

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's photo
Author
Vinod Chugani
LinkedIn

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.

Topik

Belajar bersama DataCamp

Kursus

Simulasi Statistik di Python

4 Hr
19.8K
Belajar untuk memecahkan masalah yang semakin kompleks dengan menggunakan simulasi untuk menghasilkan dan menganalisis data.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak