Bu bölümde, özellikle kategorik değişkenleri ve onların sayısal özetlerini görselleştirmek için tasarlanmış makineleri tanıyacağız.
Hazırsanız, bu makineleri sırayla çalıştırıp, hangi işler için en
uygun olduklarını mpg
veri seti üzerinden keşfedelim.
library(tidyverse)
Amaç: Farklı kategorilerin sahip olduğu miktarları veya sayıları birbiriyle görsel olarak karşılaştırmak.
geom_bar()
Eğer amacımız, veri setimizdeki her bir kategoriden kaç adet gözlem
olduğunu saymaksa, geom_bar()
tek başına yeterlidir. Sadece
x
estetiğine kategorik değişkenimizi vermemiz gerekir,
y
eksenini (sayıları) kendisi otomatik olarak hesaplar.
ggplot(data = mpg, mapping = aes(x = class)) +
geom_bar(aes(fill = class)) + # Her çubuğa kendi kategorisinin rengini verelim
theme(legend.position = "none") + # Renkler zaten eksende belli, efsaneye gerek yok
labs(title = "Arac Siniflarina Gore Gozlem Sayisi", x = "Arac Sinifi", y = "Arac Adedi")
Arac Siniflarina Gore Arac Sayilari
geom_col()
Eğer elimizde zaten özetlenmiş bir veri varsa, bu iş için özel olarak
tasarlanmış olan geom_col()
’u kullanırız.
# Adım 1: dplyr ile veriyi özetleyelim.
mpg_summary <- mpg %>%
group_by(class) %>%
summarise(ortalama_hwy = mean(hwy), .groups = 'drop')
# Adım 2: Bu özet veriyi geom_col ile görselleştirelim.
ggplot(data = mpg_summary,
mapping = aes(x = reorder(class, ortalama_hwy),
y = ortalama_hwy)) +
geom_col(aes(fill = class)) +
coord_flip() +
theme(legend.position = "none") +
labs(title = "Arac Siniflarina Gore Ortalama Yakit Verimliligi",
x = NULL, y = "Ortalama Otoyol Verimliligi (MPG)")
Her Araç Sınıfının Ortalama Yakıt Verimliliği
Amaç: İki kategorik değişken arasındaki ilişkiyi
anlamak. Örneğin, “Silindir sayısı (cyl
) ile çekiş tipi
(drv
) arasında bir ilişki var mı?”
position = "dodge"
)Kategorileri yan yana koyarak doğrudan karşılaştırma yapmak için kullanılır.
ggplot(mpg, aes(x = factor(cyl), fill = drv)) +
geom_bar(position = "dodge") +
labs(title = "Cekis Tipinin Silindir Sayisina Gore Dagilimi",
x = "Silindir Sayisi", y = "Arac Sayisi", fill = "Cekis Tipi")
Gruplandırılmış Çubuk Grafik
position = "stack"
veya
"fill"
)Grupların bir bütün içindeki oranlarını veya toplamlarını göstermek için kullanılır.
# position="fill", her bir silindir grubunu %100'e tamamlayarak oranları gösterir.
ggplot(mpg, aes(x = factor(cyl), fill = drv)) +
geom_bar(position = "fill") +
labs(title = "Cekis Tipinin Silindir Sayisi Icindeki Orani",
x = "Silindir Sayisi", y = "Oran", fill = "Cekis Tipi")
Yığılmış Oransal Çubuk Grafik
Ustalık Uyarısı: Yığılmış çubuk grafikler, en
alttaki kategori hariç diğerlerini karşılaştırmayı zorlaştırır.
Genellikle gruplandırılmış (dodge
) veya bir sonraki
göreceğimiz panelli (facet
) grafikler daha iyi bir
seçimdir.
facet_wrap
)Grafiği, bir kategorik değişkenin her bir seviyesi için küçük “mini grafiklere” bölerek, karşılaştırmayı daha temiz ve odaklı hale getirir.
ggplot(mpg, aes(x = factor(cyl), fill = factor(cyl))) +
geom_bar() +
facet_wrap(~ drv) +
theme(legend.position = "none") + # Renkler zaten eksende belli, efsaneye gerek yok
labs(title = "Farkli Cekis Tipleri Icin Silindir Sayisi Dagilimi",
x = "Silindir Sayisi", y = "Arac Sayisi")
Panellere Ayrılmış Grafikler
geom_tile
)İki kategorik değişkenin kesişimindeki “yoğunluğu” (gözlem sayısını) renklerle göstermek için kullanılır.
# Önce dplyr ile her bir kesişimdeki araç sayısını hesaplayalım
class_drv_summary <- mpg %>%
count(class, drv)
# Şimdi bu özet veriyi geom_tile ile görselleştirelim
ggplot(class_drv_summary, aes(x = class, y = drv, fill = n)) +
geom_tile(color = "white", linewidth = 1) + # Hücreler arasına beyaz çizgi ekleyelim
geom_text(aes(label = n), color = "white") + # Hücrelerin içine sayıları yazalım
scale_fill_viridis_c() + # Renk körü dostu bir renk paleti
labs(title = "Arac Sinifi ve Cekis Tipi Kesisimi",
x = "Arac Sinifi", y = "Cekis Tipi", fill = "Arac Sayisi")
Sınıf ve Çekiş Tipi Kesişimi (Isı Haritası)
geom_boxplot
ve geom_violin
Amaç: Farklı kategorilerin, tek bir sayısal değişken üzerindeki dağılımlarını bir bütün olarak kıyaslamak.
geom_boxplot()
(Kutu Grafiği)Bir grubun medyanını, çeyrekliklerini ve aykırı değerlerini bir bakışta gösterir.
ggplot(mpg, aes(x = class, y = hwy)) +
geom_boxplot() +
coord_flip() +
labs(title = "Arac Siniflarina Gore Otoyol Yakit Verimliligi Dagilimi",
x = NULL, y = "Otoyol Yakit Verimliligi (MPG)")
Araç Sınıflarına Göre Yakıt Verimliliği (Kutu Grafiği)
geom_violin()
(Keman Grafiği)Kutu grafiğinin göremediği, verinin yoğunluk “şeklini” gösterir. Özellikle birden fazla tepe noktası olan (çok modlu) dağılımları tespit etmek için harikadır.
Kemanın genişliği, o noktadaki veri yoğunluğunu temsil eder. Bu sayede, bir grubun içindeki değerlerin nerelerde kümelendiğini bir bakışta görebiliriz.
ggplot(mpg, aes(x = class, y = hwy)) +
geom_violin(aes(fill = class)) + # Her kemana kendi rengini verelim
geom_jitter(width = 0.1, alpha = 0.3) + # Gerçek veri noktalarını da ekleyelim
coord_flip() +
theme(legend.position = "none") +
labs(
title = "Arac Siniflarina Gore Yakit Verimliligi Dagilimi",
x = NULL,
y = "Otoyol Yakit Verimliligi (MPG)"
)
Araç Sınıflarına Göre Yakıt Verimliliği (Keman Grafiği)
Grafiği Yorumlayalım: Bu keman grafiği, bir önceki
kutu grafiğinin anlattığı hikayeyi daha da derinleştiriyor. Örneğin,
“suv” sınıfında yakıt verimliliğinin iki ayrı noktada (~17
ve ~22
MPG) yoğunlaştığını, yani iki farklı tip SUV
olabileceğini ima ediyor. Kutu grafiği bu detayı bize gösteremezdi.
Ayrıca, geom_jitter()
ile eklediğimiz şeffaf noktalar
sayesinde, kemanın “olmayan veriyi gösterme” riskini de ortadan
kaldırmış olduk.
Ustanın Kararı: Eğer bir grubun dağılımının simetrik mi, çarpık mı, yoksa çok tepeli mi olduğunu merak ediyorsanız, keman grafiği genellikle kutu grafiğinden daha zengin bir hikaye anlatır.
Dostlar, tebrikler! Bu bölümde atölyemizdeki en sık kullanılan makinelerden bazılarını daha öğrendiniz. Artık kategorik verileri saymak, grupları birbiriyle yan yana veya yığılmış olarak karşılaştırmak ve grupların dağılımlarını kutu ve keman grafikleriyle derinlemesine incelemek için elinizde çok güçlü aletler var.
Bu makinelerin ortak bir noktası vardı: Hepsi, genellikle birbirinden bağımsız kategorileri veya grupları karşılaştırıyordu. Bu, bir durumun “anlık fotoğrafını” çekmek için harikadır.
Peki ya bizim hikayemiz, farklı grupları karşılaştırmak değil de, tek bir şeyin zaman içindeki yolculuğunu, inişlerini ve çıkışlarını anlatmak üzerine kuruluysa? Örneğin, bir şehrin yıllık sıcaklık ortalamasının değişimi veya bir ekonomik göstergenin aylar içindeki seyri gibi…
İşte bu tür hikayeleri anlatmak için farklı bir alete ihtiyacımız var. O anlık fotoğrafları birleştirip, bir “zaman tüneli” yaratan, trendleri ve yolculukları görünür kılan bir alete.
Bir sonraki durağımız, “Bölüm 4.4: Trendleri ve Zamanı
Görselleştirme” olacak. Bu yeni bölümde, ggplot2
atölyesindeki bu özel makineyi, yani geom_line
(çizgi grafiği)’ni ve onun en yakın akrabası olan
geom_area
(alan grafiği)’nı tanıyacağız.
Verinin zaman içindeki serüvenini bir çizgiyle nasıl takip edeceğimizi
ve bu yolculuğun ardındaki ana trendleri nasıl keşfedeceğimizi
öğreneceğiz.
Atölyenin zaman makinesini çalıştırmaya hazır olun, macera devam ediyor! Lütfen takipte kalın.