R GGPLOT2 GRAFİK ÇİZİMİ

Excel'de grafik seçilir: menüden bir tür işaretlenir, program gerisini kendi bildiğince yapar. ggplot2'de grafik kurulur: veri, eksen eşlemesi ve geometri ayrı katmanlar hâlinde üst üste eklenir, her ayrıntı sizin kontrolünüzdedir. İlk yaklaşım hızlıdır; ikincisi öğrenme yokuşu ister ama karşılığını tezde verir — aynı kod şablonuyla yüz grafik üretir, veri değişince grafik kendini günceller, dergi 300 dpi istediğinde tek parametre değişir. Akademik yayınlardaki grafiklerin ggplot2 estetiğini taşıması tesadüf değildir.
Örneğimiz arkeolojiden: bir kazı alanında dönemlere göre buluntu sayıları. Aynı veriyle iki temel grafik türünü kuracağız — gruplu sütun ve saçılım — ve tez baskısına hazır çıktı alacağız. Kodların tamamı çalıştırılmış hâliyle indirilebilir.
R scriptini indir (.R) — veriler: -veri.csv ve -acma.csv1. ggplot2'nin Katman Mantığı
ggplot(veri, aes(x = ..., y = ...)) + geom_*()Bütün ggplot2 bu tek kalıptır. ggplot() tuvali açar ve veriyi bağlar; aes() (aesthetics) hangi sütunun hangi görsel özelliğe eşleneceğini söyler — x ekseni, y ekseni, renk, dolgu; geom_*() ise geometriyi seçer: geom_col sütun, geom_point nokta, geom_line çizgi, geom_boxplot kutu. Katmanlar + ile eklenir ve grafik parça parça büyür: önce iskelet, sonra etiketler, sonra tema. Bu modülerlik, kalıbı bir kez kavrayan kişinin her grafik türüne aynı mantıkla yaklaşabilmesi demektir.
2. Faktör Sıralama: Eksen Düzeni
kayit$donem <- factor(kayit$donem,
levels = c("Erken Tunc", "Orta Tunc", "Gec Tunc", "Demir Cagi"))Bu satır olmadan grafik kronolojiyi bozar: R, metin kategorilerini alfabetik sıralar — Demir Çağı başa, Erken Tunç ortaya düşer. Arkeolojik dönemlerin, eğitim kademelerinin, ay adlarının doğal sırası alfabetik değildir; factor(levels=...) ile sıra elle bildirilir. "Grafiğim yanlış sıralanıyor" sorusu ggplot2 forumlarının en sık başlıklarından biridir ve cevabı hep bu satırdır.
3. Gruplu Sütun Grafiği
g1 <- ggplot(kayit, aes(x = donem, y = adet, fill = tur)) +
geom_col(position = "dodge") +
labs(x = "Donem", y = "Buluntu Sayisi", fill = "Buluntu Turu",
title = "Donemlere Gore Buluntu Dagilimi") +
theme_minimal(base_size = 13)
Üç ayrıntı bu grafiği taşıyor. fill = tur buluntu türünü renge eşliyor — üçüncü değişken tek grafiğe böyle sığar. position = "dodge" sütunları yan yana diziyor; yazılmazsa üst üste yığılır ve karşılaştırma zorlaşır. theme_minimal() gri arka planı ve gereksiz süsleri atıyor — tez ve dergi grafiklerinde sade temalar standarttır. Grafiğin anlattığı da net: çanak çömlek Demir Çağı'na doğru artıyor (48'den 84'e), metal obje her dönemde az ama yükselişte.
4. Saçılım Grafiği
g2 <- ggplot(acma, aes(x = derinlik_cm, y = buluntu, color = donem)) +
geom_point(size = 2.5) +
labs(x = "Derinlik (cm)", y = "Buluntu Adedi", color = "Donem",
title = "Acma Derinligine Gore Buluntu Yogunlugu") +
theme_minimal(base_size = 13)
Aynı kalıp, farklı geometri: geom_col yerine geom_point, fill yerine color (sütunun içi doldurulur, noktanın rengi boyanır — ggplot2'de bu ayrım ilk haftaların klasik takılma noktasıdır). Saçılım, iki sayısal değişkenin ilişkisini gösterir; renk eşlemesi dönem bilgisini ekleyerek "derin açmalar eski dönem buluntusu veriyor" desenini görünür kılar. İlişkinin gücünü sayıya dökmek gerektiğinde korelasyon analizi devreye girer.
5. ggsave: Tez Baskı Kalitesi
ggsave("grafik.png", g1, width = 16, height = 8, units = "cm", dpi = 300)Ekranda güzel duran grafiğin baskıda pikselleşmesi, teslim haftasının klasik paniğidir. ggsave bunu kökten çözer: boyut santimetre cinsinden, çözünürlük dpi olarak bildirilir — dergilerin ve enstitülerin tipik beklentisi 300 dpi'dır. Ekran görüntüsü almak yerine ggsave kullanmak, grafiği her boyutta yeniden ve kayıpsız üretilebilir kılar. PNG yerine .pdf veya .svg uzantısı yazmak vektörel çıktı verir; LaTeX ile tez yazanların tercihi genellikle budur.
Script ile iki CSV'yi aynı klasöre koyup çalıştırın; iki grafik çalışma klasörünüze kaydedilecek. Alıştırma: sütun grafiğindeki position = "dodge" parametresini silip yığılmış hâli görün, sonra geom_col yerine geom_line(aes(group = tur)) deneyin — katman mantığı en iyi kurcalayarak oturur. Grafiklerinizi istatistiksel analizin bütünü içinde — hangi bulguya hangi grafik türü, hangi test — konumlandırmak için R veri analizi eğitimi uygulamalı bir hat sunuyor; etkileşimli panolar tarafına geçmek isteyenler Power BI eğitimini inceleyebilir.
Sıkça Sorulan Sorular
geom_col ile geom_bar arasındaki fark nedir?
geom_col, y değerini veriden hazır alır — elinizde 'dönem, adet' gibi özetlenmiş tablo varsa bunu kullanırsınız. geom_bar ise varsayılan olarak satırları kendisi sayar; ham gözlem listesinden frekans grafiği çıkarır. Özet tabloya geom_bar uygulamak 'stat_count y ile kullanılamaz' hatasının en yaygın sebebidir; çözüm geom_col'a geçmektir.
fill ile color estetiği ne zaman hangisi?
fill kapalı alanların içini boyar: sütun, kutu grafiği, histogram, alan grafiği. color ise çizgi ve noktaları — ve kapalı şekillerin kenar çizgisini — renklendirir. Sütun grafiğinde color kullanıp 'renkler değişmiyor' diye uğraşmak klasik başlangıç takılmasıdır: sütunun gövdesi fill ister, color yalnızca inceciği kenarı boyar.
Eksendeki kategoriler neden alfabetik sıralanıyor, nasıl düzeltilir?
R, karakter sütunlarını grafiğe taşırken alfabetik sıraya dizer. Doğal sıra (dönemler, aylar, eğitim kademeleri) için sütun factor'a çevrilip levels parametresiyle sıra elle verilir: factor(x, levels=c(...)). Değerlere göre sıralamak içinse reorder(donem, adet) kullanılır — sütunları büyükten küçüğe dizmenin standart yolu budur.
Türkçe karakterler grafikte bozuk çıkıyor; ne yapmalıyım?
İki nokta kontrol edilir: CSV'nin UTF-8 okunması (read.csv içinde fileEncoding='UTF-8') ve Windows'ta grafik aygıtının karakter desteği. ggsave ile PNG alırken sorun genelde kaybolur; sürerse ragg paketinin agg_png aygıtı tam Unicode desteğiyle kesin çözümdür. Script dosyasının kendisini de UTF-8 kaydetmek (RStudio: Save with Encoding) tamamlayıcı adımdır.
Dergi 300 dpi TIFF istiyor; ggplot2 üretebilir mi?
Evet — ggsave('grafik.tiff', g1, width=16, height=8, units='cm', dpi=300, compression='lzw') doğrudan baskı kalitesinde TIFF üretir. Uzantıyı değiştirmek formatı değiştirmeye yeter: .pdf ve .svg vektörel çıktı verir, sonsuz büyütülebilir. Ekran görüntüsüyle grafik teslim etmek çözünürlük kaybının garantisidir; ggsave bu ihtiyacın tam karşılığıdır.
Birden çok grafiği tek figürde birleştirebilir miyim?
patchwork paketi bunu aritmetiğe çevirir: g1 + g2 yan yana, g1 / g2 alt alta yerleştirir; plot_annotation ile A-B panel etiketleri eklenir. Dergilerin çok panelli figür beklentisi için standart araçtır. Aynı değişkenin gruplara göre panellenmesi içinse facet_wrap(~grup) tek grafik içinde otomatik bölme yapar — iki ihtiyaç farklı araçlarla çözülür.


