Bölüm9 Grafikler

R’in en temel işlevlerinden biri de veri görselleştirmedir, bu bakımdan grafik çeşitleri ve uygulama bakımından oldukça zengin bir yapıya sahiptir.

foo <- c(1.1,2,3.5,3.9,4.2)
bar <- c(2,2.2,-1.3,0,0.2)
plot(foo,bar)

Grafik yapısının farklılaştırması amacıyla kullanılabilecek çok çeşitli grafiksel parametreler vardır. Bu parametreler, noktaların renklendirilmesi ve eksen etiketlerinin eklenmesi gibi basit görsel geliştirmeleri çağırır ve ayrıca grafikteki teknik yönleri kontrol edebilir. En sık kullanılan grafik parametrelerinden bazıları burada listelenmiştir;

type: R’ye koordinatların nasıl çizileceğini söyler (örneğin, bağımsız noktalar olarak veya çizgilerle veya hem noktalar hem de çizgilerle).

plot(foo, bar, type="l")

main, xlab, ylab: Sırasıyla grafik başlığı, yatay eksen etiketi ve dikey eksen etiketini tanımlamak amacıyla kullanılır.

plot(foo,bar,type="b",main="Grafik adı",xlab="x ekseni",
     ylab="y ekseni")

col: Grafikte yer alan nokta ve çizgilerin renklerinin tanımlanması amacıyla kullanılır.

plot(foo,bar,type="b",main="Grafik adı",xlab="",ylab="",col=2)

pch: Nokta karakterin seçiminde kullanılır, bireysel noktaların kullanıldığı grafiklerde noktanın hangi şekil ile temsil edileceğini gösterir.

plot(foo,bar,type="b",main="Grafik adı", col=4,pch=8)

cex: Çizilen nokta karakterinin boyutunun belirlenmesi amacıyla kullanılır.

plot(foo,bar,type="b",main="Grafik adı", col=4,pch=8, cex=2.3)

lty: Çizgi tipini belirler (noktalı veya çizgili gibi).

plot(foo,bar,type="b",main="Grafik adı", col=6,pch=15,cex=0.7, lty=3)

lwd: Grafikte yer alan çizginin kalınlığını belirler.

plot(foo,bar,type="b",main="Grafik adı",
col=6,pch=15,lty=3,cex=0.7,lwd=2)

xlim, ylim: Grafikteki yatay ve dikey eksen genişliğini (grafik alanını) belirler.

plot(foo,bar,type="b",main="Grafik adı",xlab="",ylab="",
                     col=6,pch=15,lty=3,cex=0.7,lwd=2,xlim=c(3,5),ylim=c(-0.5,0.2))

9.1 Mevcut grafik üzerine ekleme yapmak

Bazı durumlarda sıfırdan grafik üretmek yerine mevcut grafik üzerinde eklemeler yapmak kullanışlı olabilir, veya grafiğiniz üzerinde belirli noktalara vurgu yapma ihtiyacınız doğabilir, bu gibi durumlarda faydalanabileceğimiz fonksiyonlar aşağıda açıklanacaktır.

points: nokta ekleme

lines, abline, segments: çizgi ekleme

text: metin ekleme

arrows: ok ekleme

legend: etiket ekleme

Uygulamalar için lütfen ders videosuna geçiniz.

9.2 Önemli grafik paketleri

9.2.1 lattice

Grafik elde etme üzerine ilk önerilen paketlerden biri lattice’dir. Bu kapsamda kullanılabilecek fonksiyonlardan birkaçı aşağıda örneklenmiştir.

lattice::xyplot(Sepal.Width ~ Sepal.Length, data = iris)


Kategorik değişken içeren verilerde, kategorilere bağlı olarak çoklu grafik elde etmek de mümkündür. Örnek uygulamada irisverisi için Species kategorik değişkendir.

levels(iris$Species) 
## [1] "setosa"     "versicolor" "virginica"
lattice::xyplot(Sepal.Width ~ Sepal.Length | Species, data = iris)


Paketin temel amacı, karmaşık grafikleri tek bir fonksiyon yardımı ile çizebilmektir, bu bakımdan farklı grafik türleri aşağıda örneklenmiştir.

lattice::dotplot(Species ~ Petal.Length, data = iris)


lattice::bwplot(Species ~ Petal.Length, data = iris)


library(MASS)     # Cars93 dataset icin indiriyoruz
## 
## Attaching package: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
Cars<-dplyr::select(Cars93,Price,Type,Origin)
head(Cars)
##   Price    Type  Origin
## 1  15.9   Small non-USA
## 2  33.9 Midsize non-USA
## 3  29.1 Compact non-USA
## 4  37.7 Midsize non-USA
## 5  30.0 Midsize non-USA
## 6  15.7 Midsize     USA
lattice::bwplot(Price ~ Type | Origin, data = Cars93)

9.2.2 ggplot2

Grafik oluşturmak için en sık kullanılan paketlerden biri Hadley Wickham tarafından oluşturulan ggplot2’dir. Temeli The Grammar of Graphics kitabına dayanmaktadır. Etkileyici görseller elde etme imkanı sunan ggplot2, bu işlemi qplot() ve ggplot() fonksiyonları ile gerçekleştirmektedir.

9.2.2.1 qplot

library(ggplot2)
attach(iris)
qplot(Sepal.Length, Sepal.Width, color = Species, shape = Species)


qplot(Species, Petal.Length, geom = "boxplot")

9.2.2.2 ggplot

ggplot2 paketinin temel fonksiyonu olan ggplot(), gelişmiş görsel raporlama imkanı sunmaktadır. Bu fonksiyonu kullanarak görselleştirme yapılacaksa anlaşılması gereken üç yapı mevcuttur, bunlar aesthetics, geoms, ve stats’dır.

aesthetics: aes() fonksiyonu ile görsel seçimler yapılır, konum, renk ve poziyon gibi.

geoms aes() fonksiyonu ile tanımlanan işlemlerin grafiğe aktarılmasını sağlar.Bu işlemler geom_point(), geom_line() gibi fonksiyonlar yardımı ile gerçekleştirilir.

stats stat_summary(), stat_quantile() gibi fonksiyonlar aracılığı ile verinin özetlenmesini sağlar.

p <- ggplot(iris) +   
  geom_point(aes(x = Petal.Length, y = Petal.Width, shape = Species, color = Species)) +
  xlab("Petal Length") +  # Add axis labels
  ylab("Petal Width") +
  ggtitle("Petal Length and Petal Width of Iris Flowers")

print(p)

9.2.3 plotly

İnteraktif grafik elde etme ve html çıktı elde edebilme imkanı plotly paketini de oldukça popüler hale getirmiştir.

library(plotly)
head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1
col1 <- colorRamp(c("red", "blue"))

p<-plot_ly(mpg, x = ~cty, y = ~hwy, z = ~cyl) 

add_markers(p,color = ~cyl, colors = col1)