Bölüm 9 Grafikler
Kazanımlar
R programlama dilinde elde edilen verilerle grafikler oluşturulabilir.
R programlama diline dahil olan plot
vb fonksiyonlarla grafikler oluşturulabileceği gibi harici kütüphaneler yardımıyla da grafikler oluşturulabilir.
Bu ünitede R programlama dilinde dahili olarak gelen plot
fonksiyonunu ve bu fonksiyonu temel alan bazı fonksiyonları ve bu grafikler üzerinde çeşitli değişiklikleri yapabileceğimiz fonksiyonları tanıtacağız.
9.1 plot Fonksiyonu
R programlama dili içinde hazır gelen plot fonksiyonu ile grafik oluşturulabilse de genel olarak basit görsellere sahiptir. En basit haliyle plot fonksiyonunun kullanımı şöyledir (elde edilen grafik Şekil 9.1 de gösterilmiştir.):
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 12 26 18 45 94
# x ve y vektörleri ile grafik oluşturma
plot(x,y)

Şekil 9.1: En basit plot kullanımı
Farklı tiplerde grafik oluştura bilmek için type isimli parametreden faydalanılabilir. Bu parametrenin alabileceği değerler şunlardır “p”, “l”, “b”, “c”, “o”, “h”, “s”, “S”, “n” dir.
- “p”: nokta grafik (varsayılan değer)
- “l”: çizgi grafik
- “b”: çizgi (sürekli değil) ve nokta grafiği (nokta etrafında çizgi yok: — o — o —)
- “c”: b ye benzer nokta yok ( — — — )
- “o”: b ye benzer ancak çizgi süreklidir
- “h”: histogram grafiği
- “s”: adım grafiği
- “S”: adım grafiği. “s” ile arasındaki fark başlama şeklidir. “s” önce yatay çizgi ile başlarken “S” önce dikey çizgi ile başlar.
- “n”: grafiğin çizilmemesini sağlar. Sadece eksenler çizilir.
Şimdi bu kodları örnekler üzerinden inceleyelim.
type parametresi “p” olarak seçildiğinde nokta grafiği oluşur (elde edilen grafik Şekil 9.2 de gösterilmiştir).
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 89 33 70 95 24
# x ve y vektörleri ile grafik oluşturma
plot(x,y, type="p")

Şekil 9.2: plot fonksiyonu ile nokta grafiği oluşturma
type parametresi “l” olarak seçildiğinde çizgi grafiği oluşur (elde edilen grafik Şekil 9.3 de gösterilmiştir).
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 53 68 82 98 86
# x ve y vektörleri ile grafik oluşturma
plot(x,y, type="l")

Şekil 9.3: plot fonksiyonu ile çizgi grafiği oluşturma
type parametresi “b” olarak seçildiğinde çizgi ve nokta grafiği oluşur (elde edilen grafik Şekil 9.4 de gösterilmiştir).
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 28 36 94 41 60
# x ve y vektörleri ile grafik oluşturma
plot(x,y, type="b")

Şekil 9.4: plot fonksiyonu ile çizgi ve nokta grafiği oluşturma
type parametresi “c” olarak seçildiğinde “b” ile oluşturulan grafikteki çizgilerle grafik oluşur. Şekil 9.5 e bakılırsa daha net anlaşılır.
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 7 77 35 99 82
# x ve y vektörleri ile grafik oluşturma
plot(x,y, type="c")

Şekil 9.5: plot fonksiyonu type=‘c’ grafiği
type parametresi “o” olarak seçildiğinde “b” ye benze grafiği oluşur. Fakat çizgi grafiği süreklidir. Şekil 9.6 deki grafikte elde edilen grafiği görebilirsiniz.
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 8 47 26 65 57
# x ve y vektörleri ile grafik oluşturma
plot(x,y, type="o")

Şekil 9.6: plot fonksiyonu type=‘o’ grafiği
type parametresi “h” olarak seçildiğinde histogram grafiği oluşur. Histogram grafiğini Şekil 9.7 de görebilirsiniz.
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 55 86 42 43 68
# x ve y vektörleri ile grafik oluşturma
# lwd çizgi kalınlığını seçmemizi sağlar
plot(x,y, type="h", lwd=20)

Şekil 9.7: plot fonksiyonu ile histogram grafiği oluşturma
type parametresi “s” olarak seçildiğinde adım (step) grafiği oluşur. Adım grafiği Şekil 9.8 de gösterilmiştir.
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 60 76 62 100 73
# x ve y vektörleri ile grafik oluşturma
plot(x,y, type="s")

Şekil 9.8: plot fonksiyonu ile adım grafiği oluşturma
type parametresi “S” olarak seçildiğinde adım(step) grafiği oluşur. “s” ile arasındaki fark başlama şeklidir. “s” önce yatay çizgi ile başlarken “S” önce dikey çizgi ile başlar. Şekil 9.9 de adım grafiğinin 2. türünü görebilirsiniz.
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 25 77 56 99 30
# x ve y vektörleri ile grafik oluşturma
plot(x,y, type="S")

Şekil 9.9: plot fonksiyonu ile adım grafiği oluşturma
type parametresi “n” olarak seçildiğinde eksenler oluşturulur fakat çizim yapılmamasını sağlar. Şekil 9.10 de boş grafik çerçevesini görebilirsiniz. Bu şekilde boş çerçeve oluşturmak daha sonra üzerine çeşitli grafikler eklerken düzgün izim yapmakta kolaylık sağlayabilir.
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 93 87 99 4 84
# x ve y vektörleri ile grafik oluşturma
plot(x,y, type="n")

Şekil 9.10: plot fonksiyonu type=‘n’ grafiği
Diğer plot fonksiyonu paramtreleri:
- main: girilen metin başlık olarak grafiğe eklenir.
- sub: girilen metin alt başlık olarak grafiğe eklenir.
- xlab: girilen metin x ekseni başlığı olarak grafiğe eklenir.
- ylab: girilen metin y ekseni başlığı olarak grafiğe eklenir.
- asp: grafik en boy oranının belirlenmesini sağlar
- col: çizim rengi
- lwd: çizgi kalınlığı
- xlim: x ekseni sınırları belirlenir
- ylim: y ekseni sınırları belirlenir. (bakınız Şekil 9.12)
- lty: çizgi tipi belirlenir. Tam sayı olarak (0=blank, 1=solid (varsayılan), 2=dashed, 3=dotted, 4=dotdash, 5=longdash, 6=twodash) veya metin olarak
"blank"
,"solid"
,"dashed"
,"dotted"
,"dotdash"
,"longdash"
veya"twodash"
değerlerini alabilir. - pch: notka türü (noktalı grafik seçilmeli b,o veya p). 0 ile 25 arasında tam sayı değer girilerek özel değer atanabileceği gibi doğrudan karakter de yazılabilir. 30 üzeri değerde girilebilir fakat var olan karakterlerin yerine geçer. Örneğin 65 değeri girilirse 65 değerinin karakter karşılığı olan “A” ifadesi
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 69 52 92 26 1
# x ve y vektörleri ile grafik oluşturma
plot(x,y, type="b", lwd=2, col="blue",
main="Ana Başlık", sub="Alt Başlık",
xlab="X Ekseni Başlığı", ylab="Y Ekseni Başlığı")

Şekil 9.11: plot fonksiyonu ile grafiği oluşturma
9.1.1 lines Fonksiyonu
Birden fazla grafiği üst üste ekleme için lines isimli fonksiyondan yararlanılır. Önce grafik oluşturulur ve ardından lines ile eklenmesi istenen grafik eklenir. Aşağıdaki örnekte nasıl yapılacağını görebilirsiniz.
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y = sample(1:100, 5)
z
print(x)
## [1] 1 2 3 4 5
print(y)
## [1] 100 53 66 43 76
print(z)
## [1] 5 10 78 37 3
# x ve y vektörleri ile grafik oluşturma
plot(x, y, type="b", lwd=2, col="blue",
main="Ana Başlık", sub="Alt Başlık",
xlab="X Ekseni Başlığı", ylab="Y Ekseni Başlığı",
ylim=range(min(y,z), max(y,z)))
lines(x, z, lwd=3, col="orange")

Şekil 9.12: lines fonksiyonu ile üst üste grafik oluşturma
Örnek: 10 elemanlı 2 vektör oluşturarak bu vektörlere ait bir grafik oluşturunuz. Grafikte başlıklar, çizgi kalınlığı, renk ve grafik tipini ayarlayınız.
9.1.2 legend Fonksiyonu
legend fonksiyonu ile grafiğe gösterge eklenebilir. Aşağıdaki örnekte ilk argüman (x parametresi) ile gösterge konumu, 2. argüman(legend paramtresi) ile gösterge isimleri, fill paramtresi ile gösterge renkleri ve title parametresi ile gösterge başlığı belirlenmiştir. Detaylı bilgi için legend fonksiyonunun yardım sayfasını inceleyebilirsiniz.
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y = sample(1:100, 5)
z
print(y)
## [1] 98 99 21 52 47
print(z)
## [1] 31 67 17 96 93
# x ve y vektörleri ile grafik oluşturma
plot(x, y, type="h", lwd=10, col="blue",
main="Ana Başlık", sub="Alt Başlık",
xlab="X Ekseni Başlığı", ylab="Y Ekseni Başlığı",
ylim=range(min(y,z), max(y,z)))
lines(x, z, lwd=3, col="orange", type="b", ylab="Test")
legend(x="bottomlef", legend=c("Y", "Z"), fill = c("blue", "orange"), title = "Gösterge")

Şekil 9.13: legend fonksiyonu ile grafiğe gösterge ekleme
9.2 ggplot2 Paketi
plot fonksiyonunun yanı sıra grafik oluşturmak için harici paketler de mevcuttur. ggplot2, plotly ve lattice bunlardan bazılarıdır. Bu paketlerden en çok kullanılanı ise ggplot2 paketidir. ggplot2 ile birçok grafik türü oluşturulabilmektedir. Harici bir paket olduğundan önce kurulması gerekir. Bunun için R/RStudio konsolunda install.packages komutu ile kurulumu sağlanmalıdır.
install.packages(ggplot2)
Kurulum tamamlandıktan sonra library fonksiyonu yardımıyla projeye eklendikten sonra kullanılabilir. ggplot2 paketi ile grafik oluştururken ilk oluşturulması gereken ggplot fonksiyonu ile nesnenin oluşturulmasıdır. Daha sonra istenen grafik türüne ait fonksiyon kullanılarak istenen grafik elde edilebilir. plot fonksiyonunda doğrudan vektörler kullanılırken ggplot fonksiyonunda daha çok data.frame veri yapıları kullanılmaktadır. ggplot2 nin kendi sayfasından
Gelin grafikleri örneklerle inceleyelim. Şekil ’de bir çizgi grafiği örneği gösterilmiştir.
library(ggplot2)
# x ekseni için 5 birimlik bir vektör
= 1:5
x # y ekseni için 5 birimlik vektör
= sample(1:100, 5)
y = data.frame(x=x,y=y)
veri ggplot(data = veri, aes(x,y)) + geom_line(colour="blue")

Şekil 9.14: ggplot2 ile çizgi grafiği