Veriyi etkin bir şekilde görselleştirme analitik sürecinde teşhis ve model geliştirmenin en önemli aracıdır. R bunun için oldukça zengin imkanlar sunuyor.

R’da eski usul grafikler

R platformu uzun bir süre akademik bir çevrede geliştirilmiş ve kullanılmıştı. Görselleştirme için R’da bulunan klasik fonksiyonlar bu geçmişi yansıtır. Bunlar histogram üreten hist(), whisker grafikleri üreten boxplot() gibi fonksiyonların yanısıra bir çok veri sınıfına kendini uyarlayabilen plot() fonksiyonudur. Tasarım ve kullanımı akademik bir çevrede ve uzun yıllar önce gelişmiş olan bu fonksiyonlar parametre ve sözdizimini de bu geçmişini yansıtır.

Önce birkaç örnekle görelim. R’daki veri setlerinden birini kullanacağız. R’daki veri setlerinden biri olan İsviçre’deki sosyoekonomik indikatörler ve doğurlagnlık ilişkisine ilişkin verisetini kullanarak bir örnek:

plot(Education ~ Fertility, data=swiss, 
     main="İsviçre'de doğurganlık",
     xlab="Doğurganlık",
     ylab="Eğitim")

R’daki geleneksek çizim sistemi çizim ekranında kalan bir görüntinin üzerine yeni veriler eklemeye imkan verir. İlk çizim aynı kalırken üzerine katmanlar eklenir:

plot(Education ~ Fertility, data=swiss, 
     col="blue",
     main="İsviçre'de doğurganlık",
     xlab="Doğurganlık",
     ylab="Değişkenler")
points(Agriculture ~ Fertility, data=swiss,
       col="red",
       pch="x")

Böyle bir çizimde bir de lejand ihtiyacı vardır. Lejand eklemek için kullanılan legend() fonksiyonu ilk bakışta anlaşılması güç, yani sezgisel olarak yazamayacağınız bir yapıya sahip. Kontrolü de pek kolay değil:

plot(Education ~ Fertility, data=swiss, 
    col="blue",
    main="İsviçre'de doğurganlık",
    xlab="Doğurganlık",
    ylab="Değişkenler")
points(Agriculture ~ Fertility, data=swiss,
    col="red",
    pch="x")
legend("topleft",
    c("Eğitim","Tarımsal"),
    fill=c("blue","red"),
)

Temel R çizim fonksiyonları bir çok ihtiyaca cevap verebilir, ancak gördüğünüz gibi oldukça uzun, şifreli bir görünümde kodlarla sonuçlanmaktadır. Örneğin çizime bir doğrusal regresyon çizgisi eklemek için görsel katmanlarımız arasına bir a-b çizgisi ekleyen abline() fonksiyonunu doğrusal modelleme yapan lm() fonksiyonu ile birlikte kullanabiliriz:

plot(Education ~ Fertility, data=swiss, 
    main="İsviçre'de doğurganlık",
    xlab="Doğurganlık",
    ylab="Değişkenler")
abline(lm(Education ~ Fertility, data=swiss), 
       col="blue")
points(Agriculture ~ Fertility, data=swiss,
    col="red",
    pch="x")
abline(lm(Agriculture ~ Fertility, data=swiss), 
       col="red")
legend("topleft",
    c("Eğitim","Tarımsal"),
    fill=c("blue","red"),
)

Bu şekilde eğitim seviyesi arttıkça azalan doğurganlık oranının tarımsal nüfus arttıkça arttığını görmüş oluyoruz. Ama oldukça zahmetli bir şekilde.

ggplot2

R’daki geleneksel çizimle ilgili bu örnekler günümüz ihtiyaçları ile değerlendirildiğinde yetersiz ve kullanımı zor bulunmaktadır. Bu yükselen ihtiyaç dolayısıyla 2005 yılında R için yeni bir çizim kitaplığı ortaya çıkmuş ve kullanıcılar arasında gördüğü destekle günümüze kadar hızla büyümüş ve gelişmiştir. Bu kitaplık kuramsal olarak sağlam bir temel sağlayan bir “grafik grameri”ne dayanmaktadır. Ancak bu konuya ileriki bölümlerde gireceğiz. Burada ggplot2 kitaplığındaki basitleştirilmiş bir çizim fonksiyonu olan “quick plot(hızlı çizim)” kısaltması olan quickplot() fonksiyonu ile başlayacağız.

quickplot() geleneksel plot() ile karşılaştırıldığında daha akıllı bir fonksiyondur. Verilen veriye göre nasıl bir çizim yapacağına karar verebilir. Örneğin tek bir değişken verilirse histogram çizer:

require(ggplot2)
quickplot(x=Fertility, data=swiss)

Oysa iki değişken verildiğinde quickplot() otomatik olarak bildiğimiz türden bir x-y grafiği üretir:

require(ggplot2)
quickplot(x=Fertility, y=Education, data=swiss)

Burada çizim ve tipografi (font) kalitesinin günümüz beklentilerine daha uygun olduğunu da not edebiliriz.

ggplot2’nin çizim özelliklerine gelecek birkaç yazıda devam edeceğiz.