Bölüm 9 Basit Veri Görselleştirme
Kitabın ‘Neden R?’ isimli bölümünde de açıklandığı üzere, aslında R veri görselleştirme noktasında çok kapsamlı çözümler sunabilmektedir. Ancak, bu bölümde yalnızca temel fonksiyonlarla (özellikle plot()
ile) basit veri görselleştirme üzerine örnekler verilmiştir. İleri düzey veri görselleştirme konusu, odağına veri görselleştirmeyi alan bir başka kitaba bırakılmıştır.
9.1 plot() Fonksiyonu ve Grafik Türleri
plot()
fonksiyonu ile temel düzeyde bir veri görselleştirmesi yapılabilir. Bu fonksiyon, çok temel argümanlar ile hızlıca görselleştirme yaparak veriyi incelemeye olanak sağlar.
# x ve y vektörlerini oluşturma (200 gözlem)
x <- rnorm(200)
y <- x + rnorm(200)
# basit bir görselleştirme
plot(x, y)
plot()
fonksiyonu ile bu saçılım grafiği (scatter plot) haricinde farklı grafik türlerinde de veri görselleştirmesi yapılabilir.
# örnek uygulama yapabilmek adına veri setlerinin ve bir fonksiyonun üretilmesi
x <- rnorm(200)
y <- x + rnorm(200)
faktor <- factor(mtcars$cyl)
fonksiyonM <- function(x) x^2 + 1
# grafiklerin birlikte gösterilmesi için (2 satır, 2 sütun olacak şekilde)
par(mfrow = c(2, 2))
# saçılım grafiği
plot(x, y)
# sütun grafiği
plot(faktor)
# kutu grafiği
plot(faktor, rnorm(32))
# verilen bir fonksiyonun grafiği
plot(fonksiyonM, 0, 10)
# grafiklerin yine eskisi gibi tek başına gösterilmesi için, az önce yapılan ayarın düzeltilmesi gerekiyor
par(mfrow = c(1, 1))
Örneklerden görüldüğü üzere plot()
fonksiyonu kendisine verilen veri setine göre düzenlemeyi kendi yapmaktadır. Örneğin, sütun grafiği çizilirken plot()
fonksiyonu içine herhangi bir ek argüman girilmemesine karşın, fonksiyon elindeki veri setinden bir sütun grafiği oluşturması gerektiğini anlamaktadır. Çünkü verilen veri seti faktör türündedir. Benzer şekilde, iki sürekli değişken verildiğinde plot()
fonksiyonu bir saçılım grafiği oluşturacaktır.
plot()
fonksiyonu ile oluşturulacak grafiğin türü type
argümanı ile belirlenebilir.
# örnek uygulama yapabilmek adına veri setlerinin üretilmesi
x <- 1:15
y <- c(3, 4, 7, 11, 8, 9, 14, 2, 3, 4, 5, 6, 7, 10, 10)
# grafiklerin birlikte gösterilmesi için (1 satır, 3 sütun olacak şekilde)
par(mfrow = c(1, 3))
plot(x, y, type = "l")
plot(x, y, type = "s")
plot(x, y, type = "p")
# grafiklerin yine eskisi gibi tek başına gösterilmesi için, az önce yapılan ayarın düzeltilmesi gerekiyor
par(mfrow = c(1, 1))
# grafiklerin birlikte gösterilmesi için (1 satır, 3 sütun olacak şekilde)
par(mfrow = c(1, 3))
plot(x, y, type = "o")
plot(x, y, type = "b")
plot(x, y, type = "h")
# grafiklerin yine eskisi gibi tek başına gösterilmesi için, az önce yapılan ayarın düzeltilmesi gerekiyor
par(mfrow = c(1, 1))
# grafiklerin birlikte gösterilmesi için (1 satır, 3 sütun olacak şekilde)
par(mfrow = c(1, 3))
plot(x, y, type = "c")
plot(x, y, type = "S")
plot(x, y, type = "n")
# grafiklerin yine eskisi gibi tek başına gösterilmesi için, az önce yapılan ayarın düzeltilmesi gerekiyor
par(mfrow = c(1, 1))
plot()
fonksiyonunda type argümanına dokuz farklı değer girilebilir. Bu argümanın değerleri l, s, p, o, b, h, c, S ve n olabilir. Her bir tür yukarıda örneklendirilmiştir. Sadece ‘s’ ve ‘S’ değerleri aynı grafiklerin oluşmasına neden olmuştur. Ancak, ikisi arasında küçük bir fark bulunmaktadır. ‘s’ değeri kullanıldığında değerler (x1, x2)‘den (y1, y2)’ye giderken önce yatay, sonra dikey çizgiler çizilirken, ’S’ değeri kullanıldığında önce dikey, sonra yatay çizgiler çizilecektir.
9.2 Noktaların Şekli: pch Argümanı
plot()
fonksiyonunun için pch
argümanı girilerek gösterimi yapılan noktaların şekli değiştirilebilir.
pch
argümanına ek olarak eklenebilecek col
argümanı ile noktaların rengi, cex
argümanı ile noktaların büyüklüğü, bg
argümanı ile noktaların dışındaki şeklin rengi ve lwd
argümanı ile bu şeklin kalınlığı ayarlanabilir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
plot(x, y, pch = 24, col = "red", cex = 2.5, bg = "blue", lwd = 3)
pch
argümanına girilebilecek değerler aşağıdaki görselde verilmiştir.

9.3 Grafiğin Başlığı ve Alt Başlığı
Grafiklere bir başlık ve alt başlık eklenebilir. Bunun için plot()
fonksiyonunun için main
ve sub
argümanları girilmelidir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
plot(x, y, pch = 24, main = "Ana Başlık", sub = "Alt Başlık ya da Açıklama")
# adj argümanı ile başlığın yeri değiştirilebilir
plot(x, y, pch = 24, main = "Ana Başlık", adj = 0.75)
# Başlıkta matematiksel gösterimle tercih edilirken expression() fonksiyonundan yararlanılabilir
plot(x, y, pch = 24, main = expression(alpha[1] ^ 2 + frac(beta, 2) - pi*delta - epsilon + gamma^zeta - frac(eta, mu)))
9.4 Eksenler
Grafik çizilirken yatay eksenin ismi x vektörünün, dikey eksenin ismi ise y vektörünün ismi olarak alınır. Ancak kullanıcı isterse bu eksenlerin ismini xlab
ve ylab
argümanları ile değiştirebilir.
Eksenlerin isminin görünmemesi istendiğinde tırnak işaretlerinin içi boş bırakılır.
# ann argümanına FALSE değeri girilerek de eksen isimleri devre dışı bırakılabilir
plot(x, y, xlab = "Yatay", ylab = "Dikey", ann = FALSE)
Eksenlerde yer alan değerler xaxt
ve yaxt
argümanları ile silinebilir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
par(mfrow = c(1, 3))
plot(x, y, xaxt = "n")
plot(x, y, yaxt = "n")
plot(x, y, xaxt = "n", yaxt = "n")
Eksenlerde yer alan değerlerin yönü las
argümanı ile düzenlenebilir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
par(mfrow = c(2, 2))
plot(x, y, las = 0)
plot(x, y, las = 1)
plot(x, y, las = 2)
plot(x, y, las = 3)
Örneklerde görüldüğü üzere x ve y ekseninde gösterilen değerler las argümanının aldığı değere göre yön değiştirmektedir.
Eksenlerin limitleri xlim
ve ylim
argümanları ile düzenlenebilir.
9.5 Yazı Tipi Ayarları
cex.main
, cex.sub
, cex.lab
ve cex.axis
argümanları ile grafiğin başlığının, alt başlığının, eksen isimlerinin ve eksen değerlerinin büyüklükleri değiştirilebilir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
plot(x, y, main = "Ana Başlık", sub = "Alt Başlık ya da Açıklama",
cex.main = 3,
cex.sub = 1.2,
cex.lab = 2,
cex.axis = .75)
font
argümanı ile yazı tipi kalın, eğik ve hem kalın hem eğik olarak ayarlanabilir. Bu ayar ile başlık, alt başlık gibi kısımlarda bir değişiklik olmaz.
x <- 1:10
y <- sample(x = 10:50, size = 10)
par(mfrow = c(1, 3))
plot(x, y, font = 2, main = "Kalın")
plot(x, y, font = 3, main = "Eğik")
plot(x, y, font = 4, main = "Hem Kalın Hem Eğik")
Diğer kısımların yazı tiplerini değiştirmek için font.main
, font.sub
, font.lab
ve font.axis
argümanları kullanılabilir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
plot(x, y, main = "Başlık", sub = "Alt Başlık",
font.main = 1,
font.sub = 2,
font.axis = 3,
font.lab = 4)
Görüldüğü üzere 1 değeri düz yazı tipini, 2 değeri kalın, 3 değeri eğik ve 4 değeri hem kalın hem eğik yazı tipini ifade etmektedir.
text
argümanı ile grafiğin içine yazı/metin eklenebilir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
plot(x, y)
text(2, 15, "Metin")
text(5, 35, "Diğer Metin")
text
argümanının içine girilen değerler koordinatları ifade etmek içindir. Örneğin 2 ve 15 değerleri girildiğinde x = 2, y = 15 noktasına karşılık gelen noktaya ilgili metin yazdırılacaktır. Ek olarak, family
argümanı kullanılarak yazı tipi değiştirilebilir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
plot(x, y)
text(2, 15, "Metin", family = "serif")
text(5, 40, "Diğer Metin", family = "mono")
9.6 Renklendirme
Grafik üzerindeki noktaların/çizgilerin renkleri plot()
fonksiyonunun içine girilecek col
argümanı ile düzenlenebilir.
id <- 1:24
cinsiyet <- rep(c("Kiz", "Erkek"), 12)
puan <- sample(x = 50:100, size = 24)
data_sinif <- data.frame(id, cinsiyet, puan)
plot(id, data_sinif$puan, col = "orange")
Farklı gruplara göre grafik üzerindeki renkler gruplandırılabilir.
Özel bir ayarlama yapılmadığı sürece R, gruplara göre renklendirmeyi kendi olağan ayarlarına göre yapacaktır. Bu noktada, kullanıcı isterse seçtiği renklerle grafiği çizdirebilir.
renkler1 <- c("red", "blue")
plot(id, data_sinif$puan, col = renkler1[factor(cinsiyet, levels = c("Kiz", "Erkek"))])
R’da ayrıca renkler için HEX kodları da kullanılabilir. Yani ‘green’, ‘red’, ‘blue’ gibi renkler dışında HEX kodunu bildiğiniz bir rengi de grafiklerde kullanabilirsiniz.
renkler2 <- c("#00B5A7", "#FF80FB")
plot(id, data_sinif$puan, col = renkler2[factor(cinsiyet, levels = c("Kiz", "Erkek"))])
HEX renk kodları, HTML renk kodlarının bir türüdür ve ‘hexadecimal color’ ya da kısaca ‘HEX’ olarak bilinirler. Bu kodlar # işareti ile başlar ve devamında 6 adet rakam ya da harf bulunur. Bu rakam ve harflerden ilk ikisi kırmızı; sonraki ikisi yeşil ve son ikisi mavi rengi işaret eder. Bu üç renk için renk değerleri 00 ile FF arasında değişmektedir. Örneğin beyaz rengin kodu #FFFFFF iken, siyah rengin kodu #000000’dır. Renk kodlarına Google’da kısa bir araştırma yaparak ulaşabilirsiniz. Pek çok yerde kullanılan bu renk kodları, R’da özellikle grafik oluştururken kullanılabilir. Bu noktada örneğin, kurumunuzun renk paletindeki renkleri grafiğinizi renklendirmek için kullanabilirsiniz. Benzer şekilde bu renkler ile çeşitli dokümanlar ve web siteleri de oluşturulabilir.
Grafiğin arka planının rengi değiştirilebilir. Bunun için plot()
fonksiyonu çalıştırılmadan önce par()
fonksiyonu içinde bg
argümanına istenen değer girilerek çalıştırılmalıdır.
x <- 1:10
y <- sample(x = 10:50, size = 10)
# arka plan açık mavi olacaktır
par(bg = "#CCF9FF")
# grafik (noktalar mor renkli olacaktır)
plot(x, y, col = "#8300FF", pch = 16)
9.7 Çizgi Ekleme
plot()
fonksiyonu ile çizdirilen bir grafiğin üzerine lines()
fonksiyonu ile çizgi (doğru parçası) çizilebilir.
lwd
argümanı ile çizginin kalınlığı, col
argümanı ile de çizginin rengi değiştirilebilir.
lty
argümanı ile çizginin şekli değiştirilebilir. lty
argümanına 0’dan 6’ya kadar yedi farklı değer girilebilir. 1 değeri olağan ayardır ve düz çizgi çizmek için kullanılır. 2 ile kısa çizgili, 3 ile noktalı, 4 ile nokta ve kısa çizgili, 5 ile uzun çizgili ve 6 ile uzun ve kısa çizgili çizgi şekli belirleme yapılabilir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
plot(x, y)
lines(1:10, 30:39, lwd = 4, col = "red", lty = 3)
9.8 Metin Ekleme
text()
fonksiyonu ile çizdirilen grafiğe metin eklenebilir.
text()
fonksiyonunun içine girilen iki sayısal değer koordinatları ifade etmektedir. Yukarıdaki örnekte x=1, y=20 olarak belirlenen noktaya ‘Metin’ ifadesinin yazılması istenmiştir. Ayrıca yine text()
fonksiyonu ile veri noktalarının etiketleri yazdırılabilir.
9.9 Lejant
legend()
fonksiyonu ile grafik alanına lejant girilebilir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
plot(x, y)
lines(1:10, 30:39, lwd = 4, col = "red")
lines(1:10, 40:49, lwd = 4, col = "green")
legend("bottomright", legend = c("aciklama 1", "aciklama 2"),
lwd = 3, col = c("red", "green"))
legend()
fonksiyonunun içinde yer alan ‘bottomright’ ifadesi lejantın sağ altta yer almasının istendiğini gösterir. Bu değer yerine ‘top’, ‘bottom’, ‘topleft’, ‘topright’, ‘bottomleft’ ya da ‘bottomright’ yazılabilir. Bu değerler lejantın sırasıyla üstte, altta, sol üstte, sağ üstte, sol altta ve sağ altta yer alacağını ifade eder.
9.10 Grafik Alanının Çevresi
plot()
fonksiyonunun içine girilecek bty
argümanı ile grafik alanının çevresinin şekli değiştirilebilir. Bu argümanın değerleri o
, l
, 7
, c
, u
, ]
veya n
olabilir.
x <- 1:10
y <- sample(x = 10:50, size = 10)
par(mfrow = c(2, 3))
plot(x, y, bty = "o", main = "bty = 'o'")
plot(x, y, bty = "l", main = "bty = 'l'")
plot(x, y, bty = "7", main = "bty = '7'")
plot(x, y, bty = "c", main = "bty = 'c'")
plot(x, y, bty = "u", main = "bty = 'u'")
plot(x, y, bty = "]", main = "bty = ']'")
bty
argümanının içine n
(none) girildiğinde grafik alanını çevreleyen bir kutu oluşmaz. Sadece x ve y eksenlerinin değerleri yer alır.
9.11 Alıştırmalar
Alıştırma 1
\(x > 0\) için \(y = x^3\) fonksiyonunun grafiğini plot()
fonksiyonunu kullanarak çiziniz.
Alıştırma 2
x <- 1:10
ve y <- sample(x = 10:50, size = 10)
tanımlamasını yaparak x ve y değerlerine ilişkin grafiği çiziniz ve grafiğin başlığını ‘Bu Bir Başlıktır’; alt başlığını/açıklamasını ‘Buraya Açıklama Gelecek’ olarak belirleyiniz.
Yanıt İçin Tıklayınız
x <- 1:10
y <- sample(x = 10:50, size = 10)
plot(x, y, main = "Bu Bir Başlıktır", sub = "Buraya Açıklama Gelecek")
Alıştırma 3
x <- 1:10
ve y <- sample(x = 10:50, size = 10)
tanımlamasını yaparak x ve y değerlerine ilişkin grafiği çiziniz ve x-eksenine ‘id’, y-eksenine ‘Degerler’ isimlerini veriniz.
Yanıt İçin Tıklayınız
Alıştırma 4
x <- 1:10
ve y <- sample(x = 10:50, size = 10)
tanımlamasını yaparak x ve y değerlerine ilişkin grafiği çiziniz ve text()
fonksiyonu yardımıyla (5, 25) noktasına ‘XXX’ ifadesini yazdırınız.