1. Giriş: ggplot2 Nedir ve Neden Önemlidir?
- ggplot2, R programlama dilinde en popüler veri görselleştirme kütüphanesidir.
- “Grammar of Graphics” felsefesini uygular: Grafikler; veri (data), estetikler (aesthetics) ve geometrik nesneler (geoms) gibi yapı taşlarından katman katman (layer) inşa edilir.
- Bize estetik ve katman esaslı modüler bir sistem sunar; aynı veri için farklı grafik türlerini, renk ve tema ayarlarını kolayca değiştirebilirsiniz.
- Akademik araştırmalardan iş raporlarına kadar her yerde kullanılır.
1.1 Base R Plot vs. ggplot2
- Base R plot(): Hızlı bir çizim için yararlı ama esnekliği sınırlı, bir defa çizdikten sonra düzenlemesi zor.
- ggplot2: Grafikler üzerinde tekrar çalışabilir, farklı katmanlar ekleyebilir, temaları değiştirebilir, oldukça esnek ve güçlü bir sisteme sahiptir.
2. Kurulum ve İlk Adımlar
# ggplot2 genellikle tidyverse paketi içinde yer alır, direkt aşağıdaki komutla yükleyebilirsiniz:
install.packages("tidyverse")
# Yalnızca ggplot2 kurmak isterseniz:
install.packages("ggplot2")
# Kütüphaneyi etkinleştirme
library(ggplot2)
Veri İnceleme ve Temel Fonksiyonlar:
head(data),tail(data),str(data),summary(data): Veri hakkında hızlı bilgi edinmenizi sağlar.?dataset_adiveyahelp("dataset_adi"): Veri setinin dokümantasyonuna bakar.
3. ggplot2’nin Temel Mantığı: “Grammar of Graphics”
ggplot2’nin yapısı üç ana bileşeni baz alır:
- Veri (data): Hangi veri çerçevesini (data frame, tibble vb.) kullanacağımızı belirtiriz.
- Estetikler (aes): X ekseni, Y ekseni, renk, boyut, grup gibi hangi değişkenlerin görsel özelliklere karşılık geleceğini tanımlar.
- Geometrik Nesneler (geom): Hangi tür grafiği çizeceğimizi belirler (noktalar, çizgi, sütunlar vb.).
İlk basit şablon:
ggplot(data = veri_adi, aes(x = x_degiskeni, y = y_degiskeni)) +
geom_fonksiyonu()
Örneğin:
ggplot(data = mpg, aes(x = displ, y = hwy)) +
geom_point()
mpgveri setini kullanıyoruz.displ(motor hacmi) x eksenine,hwy(otoyol yakıt tüketimi) y eksenine atadık.geom_point()=> Nokta grafiği (scatter plot) çiziyor.
4. Temel Grafik Türleri (Geoms) ve Örnekleri
4.1 Nokta Grafiği (Scatter Plot) – geom_point()
-
İki sürekli değişken arasındaki ilişkiyi görselleştirmek için kullanılır.
-
Örnek:
ggplot(mpg, aes(x = displ, y = hwy)) + geom_point(color = "blue", alpha = 0.7) + labs( title = "Motor Hacmi ve Yakıt Tüketimi İlişkisi", x = "Motor Hacmi (litre)", y = "Otoyol Yakıt Tüketimi (mpg)" ) + theme_minimal() -
alpha: Noktaların saydamlık derecesini ayarlar (0-1 arası).
4.2 Çizgi Grafiği (Line Chart) – geom_line()
-
Genellikle zaman serisi veya sıralı verilerde kullanılır.
-
Örnek: ggplot2 içindeki
economicsveri setinde zaman ekseni grafiği:ggplot(economics, aes(x = date, y = pce)) + geom_line(color = "red") + labs(title = "Zaman Serisi: PCE", x = "Tarih", y = "Kişisel Tüketim Harcamaları")
4.3 Bar Grafiği (Bar Chart) – geom_bar() / geom_col()
- Kategorik değişkenlerin frekansı veya özet değerlerini gösterir.
geom_bar(): Varsayılan olarak frekans çizimi yapar (y eksenini otomatik hesaplar).geom_col(): y eksenini kendimiz tanımlarız (ör. ortalama, toplam vb.).
4.3.1 Tek Değişkenli Bar Grafiği (Frekans)
ggplot(data = diamonds, aes(x = cut)) +
geom_bar(fill = "lightblue") +
labs(title = "Distribution of Diamond Cut", x = "Cut", y = "Count")
4.3.2 Özet Değerlerle Bar Grafiği
# Örneğin mpg'de her sınıfın otoyolda galon başına ortalama mil miktarını hesaplayalım
library(dplyr)
mpg_summary <- mpg %>%
group_by(class) %>%
summarise(avg_hwy = mean(hwy))
ggplot(mpg_summary, aes(x = class, y = avg_hwy)) +
geom_col(fill = "orange") +
labs(title = "Araç sınıfına göre galon başına ortalama mil miktarı",
x = "Araç Sınıfı",
y = "Ortalama Mil")
4.4 Histogram – geom_histogram()
- Sürekli verinin dağılımını görmek için idealdir.
ggplot(diamonds, aes(x = carat)) +
geom_histogram(binwidth = 0.1, fill = "purple", color = "white") +
labs(title = "Distribution of Diamond Carats", x = "Carat", y = "Frequency")
binwidth: Sütun genişliğini ayarlar, dağılımın detay seviyesini etkiler.
4.5 Kutu Grafiği (Boxplot) – geom_boxplot()
- Gruplar arasındaki dağılımları, medyanı, çeyrek değerleri ve uç değerleri (outliers) gösterir.
ggplot(diamonds, aes(x = cut, y = price)) +
geom_boxplot(fill = "lightgreen") +
labs(title = "Boxplot of Diamond Prices by Cut", x = "Cut", y = "Price (USD)")
4.6 Yoğunluk Grafiği (Density Plot) – geom_density()
- Sürekli verinin histogram yerine pürüzsüzleştirilmiş bir dağılım eğrisi.
- Kategorik değişkenle birlikte kullanırsanız farklı renkte eğrileri üst üste görebilirsiniz.
ggplot(diamonds, aes(x = carat, color = cut)) +
geom_density() +
labs(title = "Density Plot of Carat by Cut", x = "Carat", y = "Density")
5. Estetikler (aes) ve Katmanlar
5.1 Estetik Atamaları
aes(x, y, color, fill, shape, size, alpha, group, linetype)gibi parametreler alır.aes(color = cut)derseniz,cutdeğişkenine göre her nokta farklı renkte çizilir.
ggplot(diamonds, aes(x = carat, y = price, color = cut)) +
geom_point()
5.2 Katmanlar (Layer)
- Bir grafikte birden fazla katman kullanılabilir.
- Mesela önce noktalar (
geom_point), üzerine de trend çizgisi (geom_smooth) ekleyebilirsiniz.
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point(alpha = 0.5) +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "Motor Hacmi ve Yakıt Tüketimi: Trend Çizgisi")
6. Facet Kullanımı: Veriyi Alt Gruplara Ayırma
- facet_wrap(~ degisken): Belirtilen kategorik değişkene göre çoklu grafikler oluşturur (tek boyutlu).
- facet_grid(satir_deg ~ sutun_deg): Satır ve sütunda ayrı kategoriler.
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point() +
facet_wrap(~ class) +
labs(title = "Facet Wrap ile Araç Sınıfına Göre Dağılım")
7. Temalar, Etiketler ve Özelleştirmeler
7.1 Temalar
ggplot2, çeşitli ön tanımlı temalarla gelir:
theme_gray(),theme_bw(),theme_minimal(),theme_light(),theme_classic()- Kendi temalarınızı tanımlayabilir veya tema ayarlarıyla (yazı tipi, boyut, arka plan rengi vb.) çok detaylı oynamalar yapabilirsiniz.
ggplot(mpg, aes(x = displ, y = hwy)) +
geom_point(color = "blue") +
theme_minimal() +
labs(title = "Minimal Tema Örneği")
7.2 labs() – Başlıklar ve Eksende İsimlendirme
labs(title = "", subtitle = "", x = "", y = "", caption = "")gibi parametreler grafiği açıklayıcı hale getirir.
7.3 Renk Ölçekleri ve Özelleştirme
-
scale_color_brewer(palette = "Set1"),scale_fill_brewer(),scale_color_manual(),scale_fill_manual()vb. -
Örnek:
ggplot(diamonds, aes(x = carat, y = price, color = cut)) + geom_point() + scale_color_brewer(palette = "Set1") + labs(title = "Renk Paleti Örneği")
7.4 Ek Açıklamalar (Annotate)
- Grafiğin içine özel metin veya şekiller ekleyerek önemli noktaları vurgulayabilirsiniz.
ggplot(economics, aes(x = date, y = pce)) +
geom_line() +
annotate("text", x = as.Date("2008-01-01"), y = 8000,
label = "Kriz Dönemi", color = "red")
8. Kaynaklar ve Öğrenme Yolları
- Resmi Dokümantasyon: ggplot2.tidyverse.org
- Kitaplar:
- R for Data Science by Hadley Wickham & Garrett Grolemund
- ggplot2: Elegant Graphics for Data Analysis (Hadley Wickham)
- Data Visualization: A Practical Introduction (Kieran Healy)
- Online Kaynaklar:
- R Graph Gallery (farklı grafik örnekleri)
9. Özet ve Öğrenme Stratejisi
- Temel Kavramları Öğrenin: aes, geom, theme gibi yapı taşlarını kavradıktan sonra basit grafikler oluşturun.
- Farklı Veri Setleriyle Uygulayın: Başlangıçta ggplot2 içinde gelen
mpg,diamonds,economicsgibi veri setlerini kullanın. - Adım Adım İlerleyin: Önce temel geoms (histogram, scatter, barplot), sonra facet, tema, renk paletleri gibi konulara geçin.
- Kendi Verinizi Kullanın: Öğrendiklerinizi gerçek projelerinizde ya da alanınızdan örnek veri setlerinde uygulayın.
Bu aşamalarla ilerlediğinizde, önce “Ne, Nasıl?” sorularına cevap bulacak, sonra “Neden?” sorusunu da anlamış olacaksınız. ggplot2 sadece bir grafik çizme aracı değil, aynı zamanda verinizin hikâyesini net ve güzel bir şekilde anlatabilmenizi sağlayan bir sistemdir.
Önemli Nokta: Grafiklerinizi oluştururken verinin amacını, hedef kitleyi ve iletmek istediğiniz mesajı göz önünde bulundurun. ggplot2, esnek ve güçlü bir araç olsa da başarılı bir veri görselleştirme, grafik kurallarına ve iyi bir hikaye anlatımına dayanır.
10. Ek Bilgiler
ggplot2 paketinde yer alan hazır veri setleri
ggplot2 paketinde yer alan ve doğrudan erişebileceğiniz birkaç dahili veri seti bulunmaktadır. Aşağıda bu veri setlerini ve temel içeriklerini özetledim. R ortamında library(ggplot2) komutunu çalıştırdıktan sonra data(package = "ggplot2") yazarak da bu listeyi görüntüleyebilir veya ?veri_adi ile ilgili yardım sayfasına ulaşabilirsiniz.
-
diamonds
- İçerik: Yaklaşık 54 bin elmas kaydı. Karat, kesim (cut), renk (color), berraklık (clarity) vb. değişkenleri içerir.
- Kullanım: Dağılım grafikleri, regresyon örnekleri, kategorik değişkenler için görselleştirme vb.
-
economics
- İçerik: ABD ekonomisine ilişkin aylık makroekonomik göstergeler (1967-2015). pce (kişisel tüketim harcamaları), psavert (tasarruf oranı), uempmed (işsiz kalma süresi) vb. değişkenleri içerir.
- Kullanım: Zaman serisi örnekleri, trend analizleri, ekonomik veri görselleştirmeleri.
-
economics_long
- İçerik:
economicsveri setinin “long” formatlı hali. Tüm değişkenler tek bir “value” sütununda, değişken isimleri ise ayrı bir “variable” sütununda saklanır. - Kullanım: Uzun veri formatına (long/tidy format) dayalı görselleştirme, facet işlemleri.
- İçerik:
-
faithfuld
- İçerik: Old Faithful gayzerinin püskürme aralıkları ve sürelerine ait yoğunluk tahmin değerleri (Old Faithful Geyser Data’dan türetilmiş 2D yoğunluk verisi).
- Kullanım: 2 boyutlu yoğunluk haritaları (heatmap, contour plot) vb.
-
luv_colours
- İçerik: R’nın dahili renk paletindeki renklerin [L_u_v*][1] renk uzayındaki değerlerini içerir.
- Kullanım: Renk uzayı analizleri, özel görselleştirme örnekleri.
-
midwest
- İçerik: ABD’nin orta batı bölgelerine (Midwest) ilişkin nüfus, eğitim, gelir, ırksal dağılım vb. istatistikler.
- Kullanım: Coğrafi/harita uygulamaları, demografik analizler, bar/scatterplot örnekleri.
-
mpg
- İçerik: Farklı araç modellerinin yakıt tüketimi, motor hacmi, sınıfı (SUV, compact vb.) gibi verileri.
- Kullanım: Örnek görselleştirmeler (facet, scatterplot), kategorik-sürekli değişken ilişkileri vb.
-
msleep
- İçerik: Farklı memeli türlerinin uyku süreleri, vücut kütlesi, beslenme şekli vb. bilgileri içerir.
- Kullanım: Biyolojik veriler üzerinden çeşitli istatistiksel grafikleri (kutu grafiği, barplot, scatter) denemek için.
-
presidential
- İçerik: ABD başkanlarının görev dönemlerini gösteren, tarih (start/end) ve parti bilgileri içeren küçük bir veri seti.
- Kullanım: Özel zaman ekseni grafikleri (timeline), anotasyon örnekleri vb.
-
seals
- İçerik: İstatistiksel bir örnek olarak kullanılan yüzey (surface) verisi. Bazı uzamsal koordinatlar ve ölçümlere dair bilgiler içerir.
- Kullanım: 2D yüzey (contour) çizimleri.
-
txhousing
- İçerik: Teksas eyaletindeki konut satışları (remax) için aylık veri. Şehir, tarih, satış fiyatları (median), satış adedi vb. değişkenler içerir.
- Kullanım: Zaman serisi, çizgi grafikleri, coğrafi/demografik analizler.
Uygulamalar
Uygulama 1: Scatter Plot ile Motor Hacmi ve Yakıt Tüketimi İlişkisini Görselleştirin
mpg veri setini kullanarak, motor hacmi (displ) ile otoyol yakıt tüketimi (hwy) arasındaki ilişkiyi gösteren bir scatter plot oluşturun.
- Noktaların rengini mavi, saydamlığını (alpha) 0.7 olarak ayarlayın.
- Grafik başlığı, x ve y eksen etiketlerini ekleyin.
- Minimal bir tema uygulayın.
İpuçları:ggplot(),geom_point(),labs(),theme_minimal()
Uygulama 2: Facet Wrap Kullanarak Araç Sınıflarına Göre Alt Grafikler Oluşturun
mpg veri seti üzerinden oluşturduğunuz scatter plot’a, class değişkenine göre facet wrap ekleyin.
- Her alt grafikte farklı araç sınıflarının dağılımını gösterin.
- Başlık ve eksen etiketlerini unutmayın.
İpuçları:facet_wrap()
Uygulama 3: Histogram ile Elmasların Karat Dağılımını Görselleştirin
diamonds veri setindeki carat değişkeni için bir histogram oluşturun.
- Bin genişliğini (
binwidth) 0.1 olarak ayarlayın. - Sütunların dolgu rengini istediğiniz bir renk (örneğin mor veya purple) olarak belirleyin.
- Grafik başlığı ve eksen etiketlerini ekleyin.
İpuçları:geom_histogram()
Uygulama 4: Bar Grafiği ile Elmasların Kesim Frekansını Gösterin
diamonds veri seti kullanılarak, cut değişkeninin frekansını gösteren bir bar grafiği oluşturun.
- Sütunların dolgu rengini (fill) açık mavi olarak ayarlayın.
- Uygun başlık ve eksen etiketlerini ekleyin.
İpuçları:geom_bar(),labs()
Uygulama 5: Zaman Serisi Çizgisi ile Ekonomik Veriyi Görselleştirin
economics veri setinde, date değişkenine karşılık pce (kişisel tüketim harcamaları) değerlerini gösteren bir çizgi grafiği oluşturun.
- Çizgi rengini kırmızı olarak ayarlayın.
- Grafik başlığı, x ve y eksen etiketlerini ekleyin.
İpuçları:geom_line()
Uygulama 6: Boxplot ile Elmas Fiyatlarını Kesime Göre Karşılaştırın
diamonds veri setini kullanarak, farklı cut kategorilerine göre price dağılımını gösteren bir boxplot oluşturun.
- Kutuları dolgu rengi olarak açık yeşil yapın.
- Grafik başlığı ve eksen etiketlerini ekleyin.
İpuçları:geom_boxplot()
Uygulama 7: Yoğunluk Grafiği ile Araç Yakıt Tüketimi Dağılımını İnceleyin
mpg veri seti üzerinde, hwy değişkeninin yoğunluk dağılımını çizen bir grafik oluşturun.
- Farklı araç sınıflarını (
class) farklı renklerle göstermek için estetik atamaları kullanın. - Grafik başlığı ve eksen etiketlerini ekleyin.
İpuçları:geom_density(),aes(color = ...)
Uygulama 8: Trend Çizgisi ve Annotate ile Ekonomik Kriz Dönemini Vurgulayın
economics veri setini kullanarak, date eksenine karşılık pce değerlerini gösteren bir zaman serisi grafiği oluşturun.
- Grafiğe,
geom_smooth()ile bir trend çizgisi ekleyin (örneğin lineer model kullanın). annotate()fonksiyonu ile, 2008-01-01 tarihinde “Kriz Dönemi” ifadesini grafiğe ekleyin.- Grafik başlığı, x ve y eksen etiketlerini ekleyin.
İpuçları:geom_line(),geom_smooth(),annotate()
Bu sorular ggplot2’nin temel yapı taşlarını (veri, estetik, geometrik nesneler) ve katmanlı yapı prensibini pekiştirmenize yardımcı olacaktır. Her soruyu denedikten sonra grafiğinizi gözlemleyin ve gerekirse düzenlemeler yaparak farklı görselleştirme tekniklerini keşfedin.