R VERI GORSELLESTIRME

tidyverse paketi veri düzenlemeleri, görselleştirmeleri, modellemeleri kolay bir şekilde yapabilmemizi sağlayan, R’ın birçok paketini içinde bulunduran pakettir. Bu paketin iceriginde veri gorsellestirme amacıyla ggplot2 paketi de yer almaktadır.

# install.packages("tidyverse", repos="https://cran.rstudio.com")
library("tidyverse")
library(expss)

Basit Grafik Oluşturma

Grafikler oluşturulurken, genellikle birden fazla değişkene ilişkin gözlemlerin yer aldığı veri setleri kullanılır.

R’da grafiklerin çizilmesi için kullanılan en genel fonksiyon plot() fonksiyonudur. Kız öğrencilerin kurslara katılım sayısını gösteren “kiz” nesnesine ilişkin grafik çizimi en basit haliyle plot() fonksiyonunun kullanıldığı aşağıda gösterilmiştir.

kurs <- c("Basketbol","Voleybol","Futbol","Bale","Satranc")
kiz <- c(20,25,15,35,10)
erkek <- c(25,15,30,20,15)
# "kiz" nesnesinin en basit haliyle grafiklestirilmesi
plot(kiz)

En basit grafiklerde eksen isimlendirmenin gosterimi

plot(kiz, xaxt='n') # Komut tek basina calistirildiginda, X-ekseninde hic
# bir deger gorunmeyecektir.
axis(1, at=1:5, lab=c("Basketbol","Voleybol","Futbol","Bale","Satranc"))

# axis(1, at=1:5, lab=kurs) komutu da ayni sonucu verecektir.

Her iki vektörün aynı grafikte gösterilmesi ancak sayısal iki vektör için plot(x, y) komutunun çalıştırılmasıyla gerçekleştirilebilir.

# İki sayisal vektorun ayni grafikte gosterilmesi

plot(erkek, kiz)

Veri Seti

Grafik cizimlerinde kullanılanacak olan veri seti olusturmr

Grafiklerin kolay okunması adına veri sayısının azaltılması amacıyla sınıf düzeylerine ilişkin değişkenin her düzeyinden 15’şer kişilik örneklem seçilip toplam 60 gözlemle “df1” nesnesi oluşturulması

Grafik çizimlerinde grup değişkenlerine ihtiyaç duyulduğu için sınıf düzeylerine ve cinsiyete ilişkin değişkenler as.factor()fonksiyonuyla kategorik hale getirilmiştir.

library(tuev)
 df1 <- PISA_OGR_2018 %>%
  select(SINIF,CINSIYET,OK_YETERLIK,ODOKUMA1,ST097Q01TA,ST097Q02TA,ST097Q03TA,ST097Q04TA,ST097Q05TA)  %>%  
  na.omit()%>%
 drop_var_labs() 
df2 <- df1 %>% 
  drop_var_labs() %>% 
  filter(SINIF %in%c(8,9,10,11))%>% 
  group_by(SINIF)%>%
  sample_n(15, replace=TRUE) %>%
    ungroup()%>%  
  mutate(SINIF=as.factor(SINIF), CINSIYET=as.factor(CINSIYET)) 

Temel kullanım

Okuma basari puanlari ile okuma yeterlik puanlari arasindaki iliskiyi gosteren grafigin plot fonksiyonu ile cizilmesi

Eksen İslemleri

Eksen limitlerinin belirlenmesi

df2 %>% select(OK_YETERLIK,ODOKUMA1) %>%  summary()
##   OK_YETERLIK         ODOKUMA1    
##  Min.   :-2.4403   Min.   :280.0  
##  1st Qu.:-0.4089   1st Qu.:377.3  
##  Median : 0.1222   Median :432.5  
##  Mean   : 0.1060   Mean   :445.5  
##  3rd Qu.: 0.8214   3rd Qu.:508.9  
##  Max.   : 1.8839   Max.   :706.8
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2)

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, xlim=c(0,1000), ylim=c(-7,7))

xlab ve ylabargumanlariyla eksenlere farkli adlar vermek mumkundur.

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, xlim=c(0,1000), ylim=c(-7,7))

# Eksen İslemleri

# Eksen limitlerinin belirlenmesi ve eksen adlarinin degistirilmesi
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, xlim=c(0,1000), ylim=c(-7,7),
xlab="Okuma Basari Puanlari", ylab="Okuma  Yeterligi")

Veri Sembolleri ve Boyutları

# Veri Sembolleri ve Boyutlari 
# pch argumaninin degeri degistirerek cesitli garfikler cizelim. 
# http://www.sthda.com/english/wiki/r-plot-pch-symbols-the-different-point-shapes-available-in-r
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, xlim=c(0,1000), ylim=c(-7,7),
xlab="Okuma Basari Puanlari", ylab="Okuma  Yeterligi",
     pch=16)

generateRPointShapes<-function(){
  oldPar<-par()
  par(font=2, mar=c(0.5,0,0,0))
  y=rev(c(rep(1,6),rep(2,5), rep(3,5), rep(4,5), rep(5,5)))
  x=c(rep(1:5,5),6)
  plot(x, y, pch = 0:25, cex=1.5, ylim=c(1,5.5), xlim=c(1,6.5), 
       axes=FALSE, xlab="", ylab="", bg="blue")
  text(x, y, labels=0:25, pos=3)
  par(mar=oldPar$mar,font=oldPar$font )
}
generateRPointShapes()

Spesifik veri sembolu belirleme

# pch argumaninin belirli karakter olarak verilmesi
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, xlim=c(0,1000), ylim=c(-7,7),
xlab="Okuma Basari Puanlari", ylab="Okuma  Yeterligi", 
     pch="*")

Veri sembolu boyutu değiştirme

# cex
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, xlim=c(0,1000), ylim=c(-7,7),
xlab="Okuma Basari Puanlari", ylab="Okuma  Yeterligi",
     cex=2)

Veri sembolunu kategorik değişken degeri olarak gösterme

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, xlim=c(0,1000), ylim=c(-7,7),
xlab="Okuma Basari Puanlari", ylab="Okuma  Yeterligi", 
     pch=as.character(SINIF))

Veri sembolunu kategorik değişken degeri olarak gösterme

df2 <- mutate(df2,
 SEKIL = ifelse(SINIF==8,3,
               ifelse(SINIF==9,8,
                     ifelse( SINIF==10,13,18))))


plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, 
     xlim=c(0,1000), ylim=c(-7,7),xlab="Okuma Basari Puanlari", ylab="Okuma  Yeterligi",pch=SEKIL)

Renkler

# Renklendirme
n <- 7
barplot(rep(1,n), col=rainbow(n))   

n <- 7
barplot(rep(1,n), 
        col=heat.colors(n)) 

n <- 20
barplot(rep(1,n), col=rainbow(n))   

n <- 20
barplot(rep(1,n), 
        col=heat.colors(n))

Renk adı ile renklendirme

# Her bir sinif duzeyi icin cizilen  Basari ve 
# yeterligi Grafiginin  tum sembollerin kirmizi ile cizilmesi
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, 
     xlim=c(0,1000), ylim=c(-7,7),
     xlab="Okuma Basari Puanlari", 
     ylab="Okuma  Yeterligi" ,
     pch=SEKIL,col="red")

Katehorik değişken ile renklendirme

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2,
     xlim=c(0,1000), ylim=c(-7,7),
     xlab="Okuma Basari Puanlari", 
     ylab="Okuma  Yeterligi" ,
     pch=SEKIL,col=SINIF)

Renk adı ile renklendirme

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, 
     xlim=c(0,1000), ylim=c(-7,7),
     xlab="Okuma Basari Puanlari", 
     ylab="Okuma  Yeterligi" ,
     col=c("blue","red","orange","pink"))

Cizgiler

# Cizgiler
plot(kiz)

plot(kiz, lty=2)

# ?lty

plot(kiz, lty=3, type="o")

# noktalari birbibe type ile baglar
# Arguman Degerleri Aciklama
# p                 Noktalar
# l                 cizgiler
# o                 Devam eden cizgi uzerinde nokta gosterimi
# b,c               Nokta ve cizgiler arasinda bosluklu cizme (“c” = noktalar olmadan cizme)
# s,S               Basamak gosterimi
# h                 Histogram dikey cizgileri
# n                 Herhangi bir cizgi ya da nokta olusturmaz

par(mfrow=c(2,4))
cizgi_turu=c("p","l","o","b","c","s","S","h")
for(i in 1:length(cizgi_turu)){
baslik=paste("çizgi seçenegi =", cizgi_turu[i])
plot(kiz, main=baslik, type=cizgi_turu[i])
}

par(mfrow=c(1,1))

Referans Çizgileri

# refrence cizgileri


plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, 
     xlim=c(0,1000), ylim=c(-7,7),
     xlab="Okuma Basari Puanlari",
     ylab="Okuma  Yeterligi" , 
     col=SINIF)
abline(v=mean(df2$ODOKUMA1))
abline(h=mean(df2$OK_YETERLIK))

Cizgiler belirli bir fonksiyonun degerine gore cizilebilecegi gibi, keyfi olarak referans noktalari belirlenip grafige eklenebilir. Grafige a yatayda 1 noktasina, dikeyde ise “500” noktasina kirmizi kesikli cizgiler ile referans noktalari eklenmesi

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2,
     xlim=c(0,1000), ylim=c(-7,7),
     xlab="Okuma Basari Puanlari", 
     ylab="Okuma  Yeterligi" , 
     col=SINIF)
abline(h=1,col="red",lty=1)
abline(v=500, col="black",lty=4)

Grafige 8., 9., 10. ve 11. sinif duzeylerinin ortalamalarinin sirasiyla grafiğe referans çizgisi olarak eklenmesi

attach(df2)

plot(OK_YETERLIK ~ ODOKUMA1 , 
     data=df2, xlim=c(0,1000), 
     ylim=c(-7,7),
     xlab="Okuma Basari Puanlari", 
     ylab="Okuma  Yeterligi" , 
     col=SINIF)
abline(v=by(ODOKUMA1,SINIF,mean),lty=2:5,col=c("blue","red","orange","pink"))
abline(h=by(OK_YETERLIK,SINIF,mean),lty=2:5,col=c("blue","red","orange","pink"))

Metin İşlemleri

text() fonskiyonu ile belirli bir noktaya metin eklenebilir.

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2,
main="PISA 2018 Özet Tablo",
xlab="Okuma Basari Puanlari", ylab="Okuma  Yeterligi",
pch=as.numeric(SINIF), col=SINIF)

# X-ekseninde "500", Y-ekseninde "-1" noktasına yazı eklenmesi
text(500, -1, "9. Sınıf")

Grafiğe matematiksel ifadeyle eklenebilir.

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2,
main="PISA 2018 Özet Tablo",
xlab="Okuma Basari Puanlari", ylab="Okuma  Yeterligi",
pch=as.numeric(SINIF), col=SINIF)
text(500, -1, "9. Sınıf")

# Matematiksel ifade (mu (ortalama) ifadesinin) eklenmesi
text(500, -1.5, expression(mu[9]==384.2))

Açıklama kutucuğu (legend) eklenmesi

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2,
main="PISA 2018 Özet Tablo",
xlab="Okuma Basari Puanlari", ylab="Okuma  Yeterligi",
pch=as.numeric(SINIF), col=SINIF)
legend(550,0,c("8. Sınıf","9. Sınıf",
"10. Sınıf","11. Sınıf"),
pch=SINIF,col=c("black","red","green", "blue"),cex=0.75)

#bottomright gibi bir argümanla

Açıklama kutucugunun belirli bir yere eklenmesi

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2,
main="PISA 2018 Özet Tablo",
xlab="Okuma Basari Puanlari", 
ylab="Okuma  Yeterligi",
pch=as.numeric(SINIF), col=SINIF)

#bottomright gibi bir argümanla
legend("bottomright",c("8. Sınıf","9. Sınıf",
"10. Sınıf","11. Sınıf"),
pch=SINIF,col=c("black","red","green", "blue"),cex=0.75)

KAYNAKLAR

Atar, B., Atalay Kabasakal, K., Ünsal Özberk, E. B. , Özberk, E.. H. ve Kıbrıslıoğlu Uysal, N. R ile Veri Analizi ve Psikometri Uygulamaları. PegemA Akademi”. kaynağından alınmıştır.