Ana içeriğe atla

Excel, Python ve R’da Sankey Diyagramı Nasıl Oluşturulur

Temel kavramlardan ileri uygulamaya kadar, popüler araçlarla etkili Sankey diyagramları oluşturmayı öğrenin. Akış görselleştirmelerini etkileyici ve içgörülü kılan temel bileşenleri, en iyi uygulamaları ve tasarım ilkelerini keşfedin.
Güncel 22 Nis 2026  · 9 dk. oku

Sankey diyagramlarının güzelliği, çok aşamalı sistemleri sadeleştirme yeteneklerinde yatar. En büyük enerji kayıplarını ya da bütçe tahsislerini bulmak için veri satırlarında dolaşmak yerine, en kalın akışlara bakarak bunları anında fark edebilirsiniz. Bu da onları enerji yönetimi, finansal analiz, pazarlama hunisi optimizasyonu ve kaynakların akışı ile dönüşümünü anlamanın, kesin sayısal karşılaştırmalardan daha önemli olduğu her senaryoda faydalı kılar.

Akış görselleştirmenin ötesinde analitik yeteneklerinizi genişletmek isteyenler için, sektör lideri iş zekâsı platformlarını kullanarak profesyonel panolar ve etkileşimli raporlar oluşturmayı öğreten Power BI ile Veri Görselleştirme ve Tableau ile Veri Görselleştirme kurslarımızı öneririz.

Sankey Diyagramı Nedir?

Sankey diyagramı, bağlayıcı okların genişliğinin farklı aşamalar, kategoriler veya varlıklar arasındaki akışın büyüklüğünü temsil ettiği, özelleşmiş bir akış görselleştirmesidir. İş adımlarını gösteren geleneksel akış şemalarından veya ayrık değerleri karşılaştıran çubuk grafiklerden farklı olarak, Sankey diyagramları miktarların bir sistem içinde nasıl hareket ettiğini, dönüştüğünü veya dağıldığını göstermede mükemmeldir.

Sankey diyagramı bileşenleri gösterilmektedir. Görsel: Yazar.

Yukarıdaki diyagram, yıllık 100.000 $’lık bir bütçenin farklı kategorilere nasıl aktığını göstermektedir. Pazarlama tahsisinin (40.000 $) Ar-Ge’ye (25.000 $) kıyasla gözle görülür şekilde daha kalın bir akış olarak belirmesine dikkat edin; bu, oransal farkları anında görünür kılar.

Sankey diyagramlarının tarihi ve evrimi

Bilinen ilk Sankey diyagramı 1898’de, Yüzbaşı Matthew Henry Phineas Riall Sankey’nin bir buhar makinesinin enerji verimliliğini göstermek için kullanmasıyla ortaya çıktı. Diyagramı, yakıt enerjisinin yalnızca küçük bir kısmının faydalı işe dönüştüğünü, çoğunun ise atık ısı olarak kaybolduğunu ortaya koydu.

the very first Sankey diagram

Ancak, orantılı akış görselleştirmesi kavramı Yüzbaşı Sankey’den önceye dayanır. Charles Joseph Minard, 1869’da Napoleon’un 1812 Rusya seferinin felaketini betimleyen, birçok kişi tarafından en ünlü akış diyagramı kabul edilen görseli yarattı. Minard’ın diyagramı, ordunun Rusya’nın içlerine ilerlerken ve geri çekilirken küçülen büyüklüğünü, çizgi kalınlığını hayatta kalan asker sayısını temsil edecek şekilde kullanarak gösteriyordu.

Bir Sankey diyagramının bileşenleri

Sankey diyagramının temel öğelerini anlamak, hem mevcut diyagramları yorumlamanıza hem de kendi diyagramınızı etkili biçimde oluşturmanıza yardımcı olur.

  • Düğümler sisteminizdeki kategorileri, aşamaları veya varlıkları temsil eder. Bütçe örneğimizde, "Yıllık Bütçe", "Pazarlama" ve "Dijital Reklamlar" birer düğümdür. Kaynak düğümler ("Yıllık Bütçe" gibi) genellikle solda, hedef düğümler ("Dijital Reklamlar" gibi) ise sağda görünür; ancak bu, yerleşim tercihinize göre değişebilir.
  • Akışlar veya bağlantılar düğümler arasındaki yönlü bağlayıcılardır ve genişlikleri temsil ettikleri değere orantılıdır. Yıllık Bütçe’den Pazarlama’ya giden kalın turuncu akış 40.000 $’ı, İçerik’e giden çok daha ince akış ise yalnızca 5.000 $’ı temsil eder. Bu orantılı genişlik, büyüklük farklarını vurgulamada Sankey diyagramlarını bu denli etkili kılan ayırt edici özelliktir.
  • Değerler her akışın genişliğini belirleyen sayısal verilerdir. Bunlar, sisteminizde hareket eden para, enerji, malzeme, insan veya herhangi bir ölçülebilir kaynağı temsil edebilir. Diyagram, görsel doğruluk sağlamak için bu değerlere dayanarak uygun genişliği otomatik olarak hesaplar.
  • Düşüşler kayıpları, israfı veya hedef düğüme ulaşmadan sistemden çıkan kaynakları temsil eden özel akışlardır. Bütçe örneğimiz düşüşleri göstermese de, ısı kaybını gösteren enerji diyagramlarında veya süreci yarıda bırakan müşterileri gösteren pazarlama hunilerinde görülebilirler.

Sankey Diyagramı Nasıl Oluşturulur

Sankey diyagramları oluşturmak, tercih ettiğiniz araçlara ve teknik konfor seviyenize bağlı olarak farklı yaklaşımlar gerektirir. Aynı bütçe tahsisi örneğini Excel, Python ve R kullanarak adım adım inceleyeceğiz; böylece iş akışınıza ve uzmanlığınıza en uygun yöntemi seçebilirsiniz.

Excel’de Sankey diyagramı

Excel’de yerleşik bir Sankey grafik türü bulunmaz; bu da bu görselleştirmeleri oluşturmak için üçüncü taraf bir eklenti kullanmanız gerektiği anlamına gelir. Deneyimlerime göre, ChartExpo en popüler ve kullanıcı dostu seçeneklerden biridir.

ChartExpo arayüzü ve Sankey diyagramı ön izlemesi. Görsel: Yazar.

Diyagramı oluşturmadan önce, verilerinizi her satırın bir akış bağlantısını temsil ettiği kaynak-hedef-değer formatında yapılandırmanız gerekir. Bütçe örneğimiz için bu, her bütçe tahsisini kaynak kategori, hedef kategori ve dolar tutarıyla ayrı bir satır olarak listelemek demektir.

Süreç, ChartExpo kurulduktan sonra oldukça basittir. Önce eklentiyi Microsoft AppSource’tan veya Excel’in eklenti mağazasından yükleyin. Ardından başlıklar dahil veri aralığınızı seçin ve ChartExpo’nun görselleştirme seçeneklerinden Sankey Chart’ı tercih edin.

Eklenti, veri yapınıza göre kaynak, hedef ve değer sütunlarını otomatik olarak algılar. Yukarıdaki arayüzde görüldüğü gibi ChartExpo, diyagramınızın bir ön izlemesini sunar ve Create Chart From Selection ile çizelge oluşturma, görselleştirmeyi özelleştirme veya tamamlanan grafiği sunumlarda ya da raporlarda kullanmak üzere dışa aktarma seçenekleri sağlar.

Python’da Sankey diyagramı

Python, etkileşimli özellikleri ve profesyonel çıktı kalitesi nedeniyle en çok önerilen kütüphane olan Plotly ile Sankey diyagramları oluşturmada harika seçenekler sunar. Başta ele aldığımız bütçe tahsisi örneğini kullanarak, aynı görselleştirmeyi kodla yeniden oluşturacağız.

Adım 1: Veri hazırlığı

Verilerinizi Plotly’nin beklediği formata düzenleyerek başlayın. Üç ana bileşene ihtiyacınız olacak: düğüm adlarının bir listesi ve her akış için kaynak indisleri, hedef indisleri ve değerleri belirten diziler.

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]

İndisler, düğümler listenizdeki pozisyonlara karşılık gelir; dolayısıyla source_indices = [0, 0, 0] ilk üç akışın "Annual Budget"’tan (pozisyon 0) başladığı anlamına gelir.

Adım 2: Temel Sankey oluşturma

Plotly’nin Sankey nesnesini kullanarak temel diyagram yapısını oluşturun. Gerekli parametreler düğüm tanımları ve bağlantı özellikleridir.

fig = go.Figure(data=[go.Sankey(
    node=dict(
        label=nodes,
        pad=15,
        thickness=20
    ),
    link=dict(
        source=source_indices,
        target=target_indices,
        value=values
    )
)])

Bu, varsayılan biçimlendirmeyle işlevsel bir Sankey diyagramı oluşturur. pad düğümler arasındaki boşluğu, thickness ise düğüm dikdörtgenlerinin genişliğini belirler.

Adım 3: Stil ve özelleştirme

Diyagramınızı renkler, iyileştirilmiş yerleşim ve profesyonel biçimlendirme ile zenginleştirin.

# 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
)

Adım 4: Görüntüleme ve dışa aktarma

Diyagramınızı görüntüleyin ve farklı kullanımlar için çeşitli formatlarda kaydedin.

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

Web uygulamaları için bunu doğrudan Dash uygulamalarına entegre edebilir, Sankey diyagramlarınızı etkileşimli panoların bir parçası hâline getirebilirsiniz. Ortaya çıkan görselleştirme, açılıştaki görselde gördüğümüzle tam olarak örtüşür. Bu fikri kendiniz denemeniz için Plotly ve Dash ile Panolar Oluşturma konulu harika bir eşlikli kodlama videomuz var.

R’da Sankey diyagramı

R, networkD3 paketi sayesinde Sankey diyagramları oluşturmak için mükemmel yetenekler sunar; bu paket etkileşimli, web’e hazır görselleştirmeler üretir. Aşina olduğumuz bütçe tahsisi verilerini kullanarak, R’ın yerleşik etkileşim özellikleriyle aynı profesyonel sonuçları nasıl üretebildiğini göstereceğiz.

networkD3 paketi, R’da Sankey diyagramları da dahil olmak üzere D3.js tabanlı ağ görselleştirmeleri oluşturmak için özel olarak tasarlanmıştır. Bu yaklaşımın çeşitli avantajları vardır: otomatik etkileşim (üzerine gelince bilgi, yakınlaştırma), R Markdown raporlarına kolay entegrasyon ve web yayını için sorunsuz dışa aktarma seçenekleri.

Adım 1: Kurulum ve veri hazırlığı

Önce gerekli paketleri kurup yükleyin, ardından verilerinizi networkD3’ün beklediği formata göre yapılandırın.

# 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)
)

Python’dan temel fark, R’ın düğümler ve bağlantılar için ayrı veri çerçeveleri gerektirmesi ve bağlantılar veri çerçevesinin düğüm pozisyonlarını referanslamak için sıfır tabanlı indeksleme kullanmasıdır.

Adım 2: Temel Sankey oluşturma

Gerekli parametrelerle sankeyNetwork() fonksiyonunu kullanarak diyagramınızı oluşturun.

# 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

Bu, kullanıcıların akışların üzerine gelerek tam değerleri görebildiği ve düğümleri sürükleyerek yerleşimi yeniden düzenleyebildiği etkileşimli bir Sankey diyagramı oluşturur.

Adım 3: Özelleştirme ve stil

Diyagramınızı renkler, boyutlandırma ve profesyonel biçimlendirme seçenekleriyle geliştirin.

# 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
))

Adım 4: Dışa aktarma ve entegrasyon seçenekleri

R, etkileşimli diyagramlarınızı birden fazla formatta kaydetmeyi ve raporlara entegre etmeyi kolaylaştırır.

# 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)

R’ın networkD3 paketiyle oluşturulan etkileşimli Sankey diyagramı. Görsel: Yazar. 

Ortaya çıkan bu diyagram, Python ve Excel sürümlerimizle aynı görsel içgörüleri sunar; ancak kullanıcıların veriyi daha kapsamlı biçimde keşfetmesini sağlayan yerleşik etkileşimle birlikte gelir.

Sankey Diyagramı Alternatifleri ve Karşılaştırmalar

Sankey diyagramları, kategoriler arasında net yönlü ilişkiler bulunduğunda ve akışın büyüklüğü, kesin karşılaştırmalardan daha önemli olduğunda en iyi sonucu verir. Ancak, bazı durumlarda farklı görselleştirme yaklaşımları tercih edilmelidir.

Sankey diyagramlarını ne zaman kullanmamalı

Kategorileriniz arasında yönlü bir akış yoksa Sankey diyagramlarından kaçının. Verileriniz, aralarında hareket olmaksızın yalnızca farklı grupları veya sınıflandırmaları gösteriyorsa, mesajınızı çubuk grafikler veya pasta grafikler daha net iletir. Örneğin, farklı şirketlerin pazar paylarını karşılaştırmak bir akış içermez; bu nedenle çubuk grafik daha uygundur.

Kesin sayısal karşılaştırmalara ihtiyaç duyduğunuzda bunları kullanmayın. Sankey diyagramları göreli büyüklükleri etkili biçimde gösterse de, değişen genişlikler okuyucuların tam değerleri çıkarmasını veya detaylı karşılaştırmalar yapmasını zorlaştırır. Paydaşların belirli yüzde ya da tutarları doğru biçimde karşılaştırması gerekiyorsa, tablolar veya çubuk grafikler daha uygundur.

Verileriniz çok karmaşıklaştığında ve diyagramı kalabalıklaştırdığında alternatifleri değerlendirin. 10–15’ten fazla düğüm olduğunda veya yoğun biçimde birbiriyle bağlantılı akışlar bulunduğunda, Sankey diyagramları görsel olarak bunaltıcı hâle gelebilir. Kesişen çizgiler ve üst üste binen akışlar, sistem içindeki bireysel yolları takip etmeyi zorlaştırır.

Hedef kitleniz Sankey diyagramlarına aşina değilse daha basit görselleştirmeleri seçin. Çubuk ya da çizgi grafikler kadar yaygın olmadıklarından, bazı kitleler verilerinizi yorumlamaktan çok biçimi anlamaya odaklanabilir. Genel kitlelere yapılan sunumlarda, akış ilişkisi iletiniz için kritik olmadıkça tanıdık grafik türlerine bağlı kalın.

Belirli senaryolar için daha iyi alternatifler

Alluvial diyagramlar, birden fazla zaman dilimi veya aşama boyunca değişimleri takip ettiğiniz kategorik ya da zamana dayalı akışlar için daha iyi çalışır. Sankey diyagramları bir sistemde bir anda miktarların akışını gösterirken, alluvial diyagramlar kategorik verinin nasıl evrildiğini göstermekte üstündür. Örneğin, seçmenlerin birden fazla seçim boyunca siyasi partiler arasında nasıl hareket ettiğini ya da öğrencilerin üniversite boyunca bölümlerini nasıl değiştirdiğini takip etmek, Sankey yerine alluvial diyagramlara daha uygundur.

Paralel koordinat grafikleri, çok değişkenli verileri aynı anda birden çok boyutta desenleri görmek için karşılaştırmada daha uygundur. Her veri noktası için çok sayıda değişkene sahip olduğunuzda ve kümeleri veya aykırı değerleri belirlemek istediğinizde iyi çalışırlar. Örneğin, arabaları fiyat, yakıt verimliliği, güvenlik derecelendirmeleri ve performans metriklerine göre karşılaştırmak, bu ilişkileri bir akış formatına zorlamaya çalışmaktan ziyade paralel koordinatlarla daha iyi yapılır.

DAHA FAZLASINI ÖĞRENİN: DataCamp’te alabileceğiniz En İyi 5 İş Zekâsı Kursu blog yazımız, önemli BI araçlarında uzmanlık oluşturma konusunda rehberlik sağlar.

Sonuç

Başarılı görselleştirme, özel durumunuz için doğru aracı seçmeye bağlıdır. Yönlü akış ilişkilerinin, kesin sayısal karşılaştırmalardan daha önemli olduğu ve kitlenizin bir sistemdeki en önemli akışları hızla belirlemesi gerektiği durumlarda Sankey diyagramlarını kullanın.

Sankey diyagramlarının ötesine geçmek isteyen okuyucular için, farklı karmaşıklık seviyelerinde portföyünüzü oluşturmanıza yardımcı olacak uygulamalı proje önerileri sunan Her Seviyeye Uygun 10 Veri Görselleştirme Proje Fikri blog yazımızı öneririz. Bu projeler, eleştirel düşünme becerilerini geliştirmenize ve veri görselleştirme yetkinliklerinizin somut kanıtlarını oluşturmanıza yardımcı olur.

SSS

Sankey diyagramı ile akış şeması arasındaki fark nedir?

Akış şemaları süreç adımlarını ve karar noktalarını gösterirken, Sankey diyagramları özellikle farklı aşamalar arasındaki kaynak, enerji veya verinin akışını ve miktarını görselleştirir. Sankey diyagramlarındaki okların genişliği ölçülen değerlere orantılıyken, akış şemaları miktarlardan ziyade süreç mantığına odaklanır.

Hangi tür veriler Sankey diyagramları için en uygundur?

Sankey diyagramları, bir aşamadan diğerine hareketi veya dönüşümü gösteren akış tabanlı verilerle en iyi sonucu verir; örneğin enerji dağılımı, web sitesi dönüşüm hunileri, tedarik zinciri akışları veya bütçe tahsisleri. Tamamen kategorik veriler ya da değişkenler arasında yönlü ilişkinin olmadığı veri setleri için uygun değildirler.

Kod yazmadan Sankey diyagramı oluşturmak için iyi çevrimiçi araçlar nelerdir?

Web tabanlı çözümleri tercih eden kullanıcılar için SankeyMATIC temel diyagramlar için ücretsiz ve basit bir arayüz sunarken, Flourish profesyonel sunumlar için daha gelişmiş özellikler ve etkileşim sağlar. Google Charts ve Highcharts, Sankey diyagramlarını web sitelerine gömmek isteyen geliştiriciler için mükemmeldir ve Visual Paradigm daha geniş bir iş aracı paketinin parçası olarak kapsamlı diyagram oluşturma yetenekleri sunar.

Sankey diyagramını ne zaman kullanmaktan kaçınmalıyım?

Sankey diyagramlarından kaçının; kesin sayısal karşılaştırmalara ihtiyaç duyduğunuzda (akış genişliklerini tam olarak ölçmek zor olabilir), verileriniz çok sayıda kategori içerip görsel karmaşa yarattığında veya veri noktalarınız arasında gerçek bir yönlü akış olmadığında. Ayrıca, kitleniz bu görselleştirme türüne aşina değilse ve yenilik mesajınızı gölgede bırakabilecekse daha basit alternatifleri düşünün.

Sankey diyagramında negatif değerleri veya kayıpları nasıl ele alırım?

Sankey diyagramları genellikle negatif değerleri doğrudan göstermez; çünkü ok genişlikleri pozitif miktarları temsil eder. Bunun yerine, kayıpları düğümlerden çıkan ayrı akışlar olarak gösterin veya hedef düğümlere bağlanmayan düşüş akışları kullanarak israfı ya da kaybedilen kaynakları temsil edin.

Sankey ve Alluvial diyagramlar arasındaki fark nedir?

Sankey diyagramları tek bir zaman noktasındaki akış miktarlarına odaklanırken, alluvial diyagramlar kategorik verinin birden çok zaman dilimi veya aşama boyunca nasıl değiştiğini gösterir. Alluvial diyagramlar; göç, kategoriler arasındaki geçişler veya zaman içindeki evrimi izlemek için daha uygundur.

Konular

DataCamp ile Öğrenin

Kurs

Python'da İstatistiksel Benzetim

4 sa
19.8K
Simülasyonları kullanarak veri oluşturup analiz ederek giderek karmaşıklaşan problemleri çözmeyi öğrenin.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow