R İle Temel Veri Görselleştirme İşlemleri
Bir önceki yazıda birden fazla kaynaktan topladığımız veriyi düzenlemiş ve birleştirmiştik. Artık elimizde düzgün bir veri tablosu olduğuna göre görselleştirme aşamasına geçebiliriz.
R İle Google Analytics Reporting API Erişimi başlıklı yazıda kullandığım metrikleri değiştirerek farklı tablolar oluşturabilir ve görselleştirme aşamasında buradaki verileri bir arada veya farklı tablolar üzerinden kıyaslayabilirsiniz.
R: Veri Görselleştirme
R plot, barplot, hist, pie, dotchart gibi gibi fonksiyonlar aracılığıyla fonksiyonun adı ile belirtilen istatistiki grafikleri basit bir şekilde oluşturma imkanı sunmakta. En temel kullanımını şu şekilde örneklendirebiliriz. Farklı örnekler için yazının sonunda yer alan İleri Okumalar başlığı altındaki bağlantılara göz atabilirsiniz.
plot(x, y, col = "<color>", axes = TRUE)
title(main = "<title>", col.main = "<color>")
box()
Çok karmaşık olmayan görselleştirme işlemlerine hızlı bir şekilde cevap veren bu grafikler zamanla yönetimi1 ve özelleştirmesi zor bir hale gelebilmekte. Bu amaçla oluşturulmuş ggplot2 en yaygın kullanılan paketlerden biri2. Ayrıca Plotly3, tufte4, lattice5 gibi seçenekler de ihtiyaçlar çerçevesinde değerlendirilebilir.
ggplot2 ile ilgili daha detaylı bir yazı ele alacağım. Ancak, şimdilik yazının bağlamını çok dağıtmayayım.
R: ggplot2 Paketi
Evet, elimizde sayfa url’i, bu url’in günlük görüntülenme sayısı, oturum süresi, hemen çıkma oranı, sayfanın türü, dahil olduğu kategoriler, yayınlanma tarihi gibi bilgiler var. Sayfa url’ini hariç tutarak tarih bilgisini haftalık, aylık ve yıllık olarak da gruplandırabiliriz. Bu değerler (variable) ışığında aşağıdaki grafik işlemlerini istediğimiz şekilde ele alabiliriz.
İlk olarak sayfa görüntüleme sayısının zamana bağlı olarak değişimine göz atalım.
ggplot(data = <data>, mapping = aes(x = data$x, y = data$y)) + geom_line()
Yukarıdaki kod satırı ile basit bir çizgi grafiği (line plot) oluşturabilmekteyiz. Daha pratik bir yazım olarak şu şekilde ilgili kodumuzu güncelleyebiliriz.
ggplot(data, aes(x, y)) + geom_line()
Kod satırında grafiğin türüne karar verdiğimiz kısım geom_line()
. Bu fonksiyonu değiştirerek farklı grafik türlerine kolaylıkla geçiş yapabiliriz. Birden fazla grafiği de yine +
ile kod satırımıza ekleyebiliriz. Bu durumda her grafik aynı veriler üzerinden (mapping) işleme alınabilir.
ggplot(data = gaData, mapping = aes(x = date)) +
geom_line(aes(y = pageviews), col = "red") +
geom_line(aes(y = sessions), col = "blue")
Yukarıda ifade edilen kod satırlarının çıktıları sırası ile soldan sağa doğru, şu şekilde olacaktır.
Bundan sonraki aşamada grafiklerde gruplama, grafikleri yatay veya dikey olarak karşılaştırma (facet), trend line vb. ekleme ve düzenlemelerle amacımız doğrultusunda grafik yorumları yapabiliriz.
Örneğin, organik ve ücretli trafik ile elde ettiğimiz sayfa görüntüleme sayılarını kıyaslayalım.
gaPageData.bsc %>%
filter(date >= ymd("2020-02-01"), date < ymd("2020-03-01")) %>%
select(date, organicPageviews, paidPageviews, organicbounceRate, paidbounceRate) %>%
ggplot(aes(date)) +
geom_line(aes(y = organicPageviews), color = "red") +
geom_line(aes(y = paidPageviews), color = "blue") +
ggtitle("Trafik Kaynağına Göre Sayfa Görüntüleme") +
labs(x = "Şubat 2020",
y = "Sayfa Görüntüleme",
subtitle = "Organik Trafik vs Ücretli Trafik")
R: ggplot2 Theme Özelleştirmeleri
Son olarak, theme()
fonksiyonundan da bahsetmek istiyorum. theme()
grafikteki metin ve grafik alanlarını (plot, panel, grid vb.) özelleştirmemizi sağlayan katmanımız. Bu katman sayesinde grafiklerin görüntülerine de kolaylıkla müdahale edebilmekteyiz.
Yukarıdaki grafiğe ait ggplot
kodunu aşağıda görebilirsiniz. Adım adım açıklayacak olursak, öncelikle renk değişkenlerini tanımladım. Renk paleti için hihayk/scale aracını tavsiye ederim6. Ardından gaData
verilerimi filtreleyip ggplot’un katmanlarını oluşturmaya başlıyor7 ve ggplot nesnesini (object) aktararak (gg) ilerliyorum. 2. aşamada theme özelleştirmelerine geçiyorum. Genelde en yapısal elemandan (plot) en temele (legend) doğru ilerlemeyi tercih ediyorum. Dolayısıyla ilk satırlarda plot için yapılan özelleştirmeler yer alıyor. Son aşamada da labs ile grafik açıklamalarını belirliyorum.
tcolor <- c("#474e4b",
"#7a8785",
"#acbec1",
"#c5d1c3",
"#607494",
"#f3f0f3",
"#ffffff") # https://hihayk.github.io/scale/
gg <- gaData %>%
filter(date >= ymd("2020-02-01"), date < ymd("2020-03-01")) %>%
ggplot(aes(date, pageviews, col = factor(source))) +
geom_point() +
stat_smooth(method = "lm", se = FALSE)
gg +
theme(plot.margin = unit(c(1, 1, 1, 1), "cm"),
plot.background = element_rect(fill = tcolor[7]),
panel.background = element_rect(fill = tcolor[6]),
panel.grid.major = element_line(colour = tcolor[4], linetype = "dotted", size = 0.4),
panel.grid.minor = element_line(colour = tcolor[4]),
plot.title = element_text(color = tcolor[1], vjust = -7),
plot.subtitle = element_text(color = tcolor[2], vjust = -10),
plot.caption = element_text(color = tcolor[4], vjust = -5),
axis.title.x = element_text(color = tcolor[3], vjust = -3),
axis.title.y = element_text(color = tcolor[3], vjust = 5),
axis.text.x = element_text(color = tcolor[5], angle = 90, vjust = 5),
axis.text.y = element_text(color = tcolor[5]),
legend.title = element_text(size = 10, color = tcolor[2]),
legend.background = element_blank(),
legend.key = element_blank(),
legend.position="top", legend.box = "horizontal", legend.justification = c(1, 0))
gg + labs(color = 'Trafik Kaynağı',
x = "Şubat 2020",
y ="Sayfa Görüntüleme Sayısı",
title = "Sayfa Özelinde Aylık Sayfa Görüntüleme Değişimi",
subtitle = "/landing-age-uri",
caption = "Veri kaynağı: Google Analytics")
Oluşturulan bir theme
içeriğini farklı bir değişken adıyla tutup her grafikte tekrar tanımlamadan kullanabilirsiniz. Diğer yandan, theme
içeriklerini yeni bir tema olarak da kayıt altına alıp sadece bir fonksiyon adı ile grafiklere uygulamak da mümkün.
İşlemlerimiz bu kadar. Bir sonraki yazıda R ile dizin işlemlerine, verileri ve görselleri nasıl kayıt edebileceğimize değineceğim. Temel işlemlerle ilgili anlatıların ardından bir vaka üzerinden tüm bu bilgileri sırasıyla yeniden ele alacağım. Yeni yazılardan haberdar olmak için sayfanın alt bölümünde yer alan e-bülten kayıt formunu kullanabilirsiniz.