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)
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)
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))
Okuma basari puanlari ile okuma yeterlik puanlari arasindaki iliskiyi gosteren grafigin plot fonksiyonu ile cizilmesi
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"))
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))
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.