Stacked Bar Chart (Yığılmış Sütun Grafik) Nedir? Ne İşe Yarar? Python (Matplotlib) Kod Örneği


Stacked Bar Chart (Yığılmış Sütun Grafik) Nedir? Ne İşe Yarar? Python (Matplotlib) Kod Örneği

Stacked bar chart (Türkçe: yığılmış sütun grafik), birden fazla kategorinin aynı grup içinde toplam değere nasıl katkı verdiğini görsel olarak göstermeye yarayan etkili bir veri görselleştirme yöntemidir. Bu yazıda yığılmış sütun grafiğin ne olduğunu, hangi durumlarda tercih edilmesi gerektiğini, avantaj–dezavantajlarını ve Python / Matplotlib ile örnek bir kod şablonunu bulacaksınız.

Stacked Bar Chart (Yığılmış Sütun Grafik) Nedir?

Yığılmış sütun grafik, klasik sütun grafiğin bir varyasyonudur. Her bir sütun bir grubu (örneğin ürünler, yıllar, deney koşulları, örnekler, enzimler) temsil eder; sütunun içindeki renkli parçalar ise o grubun içindeki alt kategorileri (örneğin alt sınıflar, bileşenler, alt türler, fraksiyonlar) gösterir.

Bu yaklaşım sayesinde tek bir grafikte iki şeyi aynı anda görürsünüz:

  • Toplam değer (sütunun tamamı),
  • Toplamın içindeki bileşen dağılımı (sütun içindeki segmentler).

Yığılmış Sütun Grafik Nasıl Okunur?

Yığılmış sütun grafikte sütunun tam yüksekliği grubun toplamını verir. Sütun içindeki her segmentin yüksekliği ise, alt kategorinin toplam içindeki payını veya mutlak değerini temsil eder (grafiğin nasıl kurulduğuna bağlı).

Örneğin bir gıda analizinde toplam fenolik içeriği (toplam) ve bunun alt fraksiyonlarını (segmentler) göstermek isteyebilirsiniz. Ya da mikrobiyoloji/omiks çalışmalarında bir örnekteki taksonomik dağılımı tek sütunda yığarak göstermek sık kullanılan bir yaklaşımdır.

Ne Zaman Kullanılır?

Stacked bar chart özellikle aşağıdaki sorulara hızlı yanıt vermek için idealdir:

  • Bir grubun toplamı hangi alt bileşenlerden oluşuyor?
  • Gruplar arasında toplam değerler nasıl değişiyor?
  • Alt bileşenlerin katkısı gruplara göre artıyor mu azalıyor mu?

Avantajlar ve Dezavantajlar

Avantajlar

  • Kompozisyon + toplam bilgisini tek grafikte birleştirir.
  • Gruplar arası toplam karşılaştırmayı hızlı yapmayı sağlar.
  • Sunumlarda “büyük resim” anlatımı için güçlü bir görsel etki verir.

Dezavantajlar

  • Alt kategori sayısı çok artarsa segmentler okunamaz hale gelebilir.
  • Segment değerleri birbirine çok yakınsa doğru kıyas yapmak zorlaşır.
  • Grupların toplamları çok farklıysa bazı segmentler görsel olarak “kaybolabilir” ve yanlış algı yaratabilir.

Alternatif Grafikler Ne Zaman Daha İyidir?

Aşağıdaki durumlarda stacked bar chart yerine alternatifleri düşünmek daha doğru olabilir:

  • Alt kategorileri tek tek hassas karşılaştırmak istiyorsanız: Grouped (yan yana) bar chart
  • Her grubun toplamı farklı ama oranları kıyaslamak istiyorsanız: %100 stacked bar chart (normalize edilmiş)
  • Çok fazla kategori varsa ve desen arıyorsanız: heatmap veya dot plot

Python (Matplotlib) ile Örnek Kod: Hata Çubuklu Çubuk Grafik

Aşağıdaki kod, Excel’den veri okuyarak enzim aktivitesi değerlerini çubuk grafik şeklinde çizer ve hata çubuklarını (standart sapma gibi) ekler. Not: Bu örnek teknik olarak “stacked bar chart” değil, iki serinin üst üste çizildiği bir çubuk grafik yaklaşımıdır. Gerçek bir stacked bar chart için, ikinci seriyi bottom=... parametresiyle yığmak gerekir (aşağıda ipucu verdim).

import pandas as pd
import matplotlib.pyplot as plt

path = "Path of your document"

df = pd.read_excel(path, sheet_name="All_1")

df_specific = pd.read_excel(path, sheet_name="Enzyme_1", usecols=[6])
df_specific_2 = df_specific.dropna()
Specific_Error = df_specific_2["St_Dev_S"].tolist()

df_total = pd.read_excel(path, sheet_name="Enzyme_1", usecols=[3])
df_total_2 = df_total.dropna()
Total_Error = df_total_2["St_Dev_T"].tolist()

plt.figure(figsize=(15, 7))

width = 0.65

p1 = plt.bar(df["Gene"], df["Specific_Activity"], width,
             yerr=Specific_Error, color=["blue"], capsize=5)

p2 = plt.bar(df["Gene"], df["Total_Activity"], width,
             yerr=Total_Error, color="r", capsize=5)

plt.xlabel("Enzymes")
plt.ylabel("Enzyme Activity")
plt.legend(["Total Activity (U/ml)", "Specific Activity (U/mg)"])

plt.bar_label(p1, padding=5, fmt="%.1f", fontsize=9)
plt.bar_label(p2, padding=6, fmt="%.1f", color="w", fontsize=9)

plt.axhline(y=35, color="red", linestyle="dotted", linewidth=1.5)

plt.savefig("Enzyme_Avtivity.svg", dpi=300)
plt.show()
  


Gerçek “Stacked Bar Chart” yapmak için kısa ipucu

Eğer Total_Activity değerlerini Specific_Activity üzerine yığmak istiyorsanız, ikinci plt.bar çağrısında bottom=df["Specific_Activity"] kullanılır. Böylece sütunlar gerçekten “yığılmış” olur. Örnek (sadece mantık göstermek için):

# Örnek mantık (stacked bar chart)
p1 = plt.bar(df["Gene"], df["Specific_Activity"], width, capsize=5)
p2 = plt.bar(df["Gene"], df["Total_Activity"], width,
             bottom=df["Specific_Activity"], capsize=5)
  

Sonuç

Daha yeni Daha eski