Veri Hazırlama

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 “df2” nesnesi oluşturulması

library(tuev)
library(expss)
library(dplyr)
library(ggplot2)

 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)) 

** basari puanlari ile yeterlik puanlari arasindaki iliskiyi gosteren grafigin plot fonksiyonu ile cizilmesi**

plot(OK_YETERLIK ~ ODOKUMA1 , data=df2)

Sütun (Çubuk) Grafiği

Sutun grafiği olusturmak için ilk olarak frekans tablosu elde etmek gerekir. Frekans tablosu table()fonkisyonu ile olusturulabilir.

Madde1_ozet <- table(df2$ST097Q01TA)
Madde1_ozet
## 
##  1  2  3  4 
##  3  2 36 19

Dikey sutun grafiği olusturmak icin barplot() fonksiyonu kullanımı

barplot(Madde1_ozet,
        main="Madde 1 Cevap Dağılımı",
        xlab="Cevap Kategorisi",
        ylab="Frekans") 

Yatay sutun grafiği olusturmak icin barplot() fonksiyonu horizargümanı ile kullanımı

# yatay cizilmesi
barplot(Madde1_ozet,
        main="Madde 1 Cevap Dağılımı",
        xlab="Cevap Kategorisi",
        ylab="Frekans",
        horiz=TRUE)  

Kategorik değişkenlerin her bir değeri için sütun grafiği oluşturulması

İlk olarak frekans talosu olusturulur. Grafiklerde kategorik degiskenlerin etiketleri gorunmesi icin kategorik degiskene etiket ataması yapılır

# Cinsiyete Göre Madde 2 Cevap Dağılımı

df2$ST097Q02TA
##  [1] 2 2 1 4 3 2 3 2 1 3 1 1 4 1 3 3 3 3 1 4 3 4 4 4 3 3 3 4 3 3 2 3 3 3 4 4 4 3
## [39] 3 3 3 3 3 3 3 3 4 3 2 4 4 3 3 4 3 3 3 3 3 3
## attr(,"labels")
##             Her ders    Derslerin cogunda cogunlukla test dili 
##                    1                    2                    3 
##       Bazi derslerde 
##                    4
# "Cinsiyet" değişkenindeki "1" ve "2" değerlerinin "Kız" ve "Erkek"  değerlerine dönüştürülmesi

(df2$CINSIYET <- factor(df2$CINSIYET , 
                         labels = c("Kız", "Erkek")))
##  [1] Kız   Kız   Kız   Erkek Erkek Erkek Erkek Erkek Kız   Erkek Kız   Kız  
## [13] Kız   Kız   Erkek Kız   Kız   Erkek Kız   Kız   Kız   Kız   Erkek Erkek
## [25] Erkek Erkek Erkek Kız   Erkek Erkek Kız   Kız   Erkek Kız   Erkek Kız  
## [37] Kız   Kız   Erkek Erkek Kız   Erkek Kız   Erkek Kız   Kız   Kız   Kız  
## [49] Kız   Kız   Erkek Kız   Erkek Kız   Erkek Erkek Erkek Kız   Kız   Erkek
## Levels: Kız Erkek

Cinsiyete Göre Madde 2 Cevap Dağılımı

# Cinsiyete Göre Madde 2 Cevap Dağılımı
Madde2_ozet <- table(df2$CINSIYET,df2$ST097Q02TA)
Madde2_ozet
##        
##          1  2  3  4
##   Kız    6  4 14  9
##   Erkek  0  2 20  5

Kategorik değişken etiketleri legend argumanı ile eklenebilir.

barplot(Madde2_ozet, 
main="Cinsiyete Göre Madde 2 Cevap Dağılımı", 
xlab="Cevap Kategorisi", 
ylab="Frekans", 
col=c("red","gray"), 
legend=rownames(Madde2_ozet))

Kategorik değişken gösterimi ayrı cubuklara da besideargümanı ile alınabilir.

# aynı grafikte cesitli degişiklikler yapalım beside argumanını kullanalım

barplot(Madde2_ozet, 
        main="Cinsiyete Göre Madde 2 Cevap Dağılımı", 
        xlab="Cevap Kategorisi", 
        ylab="Frekans", 
        col=c("red","gray"), 
        beside = TRUE,
         legend=rownames(Madde2_ozet))

barplot() fonksiyonu fraklı kullanıları için?barplot ile incelemeler yapabilirsiniz.

barplot(GNP ~ Year, data = longley)

barplot(cbind(Employed, Unemployed) ~ Year, data = longley,beside = TRUE)

Pasta grafigi

Pasta grafiklerinde genellikle gösterimler yüzdeler üzerinden hesaplanır.

# Cevap kategorilerinin frekans dağılımı
Madde1_ozet
## 
##  1  2  3  4 
##  3  2 36 19
# Cevap kategorilerinin yüzdelik dağılımı
yuzde <- round(Madde1_ozet/sum(Madde1_ozet)*100)
yuzde
## 
##  1  2  3  4 
##  5  3 60 32

Pasta dilimlerinin adlandırılması amacıyla karakter bir vektor olusşturulur. İsimlendire farklı şekillerde yapılabilir.

likert_ifade=c("Kolaylıkla yaparım","Zorlanarak yaparım",  "Tek başıma çok zor yaparım","Yapamam")
likert_ifade
## [1] "Kolaylıkla yaparım"         "Zorlanarak yaparım"        
## [3] "Tek başıma çok zor yaparım" "Yapamam"
# likert ifadeler ile yuzdelerin birleştirilmesi
metin <- paste(likert_ifade, " ", yuzde, "%", sep="")
metin
## [1] "Kolaylıkla yaparım 5%"          "Zorlanarak yaparım 3%"         
## [3] "Tek başıma çok zor yaparım 60%" "Yapamam 32%"

Pasta dilimlerinin adlandırılması amacıyla karakter bir vektor olusşturulur. İsimlendire farklı şekillerde yapılabilir.

pie(Madde1_ozet, labels=metin, main="Madde 1 Yüzdelik Cevap Dağılımı", col=rainbow(4))

Uc boyutlu pasta grafikleri olusturmak amacıyla da farklı paketlerden de yararlanılabilir.

library(plotrix)

pie3D(Madde1_ozet,radius=1.5,labels=metin,explode=0.2,main="Madde 1 Yüzdelik Cevap Dağılımı")

Histogram

En basit histogram grafiği hist() fonksiyonu ile çizilir.

attach(df2)
hist(ODOKUMA1)

hist(OK_YETERLIK)

İki uc deger eklenerek histogram grafiği çizilmesi

ODOKUMA_2 <- c(ODOKUMA1,900,1200)

hist(ODOKUMA_2)

Kutu Grafiği

Uc deger incelemenin cok sayıda yolu olmakla birlikte, bunlardan biri de kutu grafiklerinden yararlanmaktır.

boxplot(ODOKUMA_2)

Bazen uc degerler incelemesini de grupların ayrı ayrı düzeylerin (kategorik değişkene göre yapmak gerekir).

boxplot(ODOKUMA_2) # uc deger gorunmuyor

Kategorik değişkenin her bir değişkeni için kutu grafiği cizilmek istediğinde ise ~ ile formülasyon oluşturmak gerekir. Her bir sinif duzeyi icin kutu grafigi cizilmesi

boxplot(ODOKUMA1 ~ SINIF,
        horizontol =TRUE,data=df2,
        xlab= "Başarı Puanları",
        ylab = "Sinif Düzeyleri",boxwex=0.5) 

?boxplot komutunu çalıştırarak değişebileceğiniz argümanları iceleyebilirsiniz.

Nokta Grafiği (Dot Plot)

Nokta grafiği oluşturmak icin dotchart() fonksiyonundan yararlanılır.

dotchart(df2$OK_YETERLIK)

Nokta grafiği de bir değişkenin kategorilerine göre çizdirilebilir. Bu amaçla Ornek1 veri setinden okuma yeterlik puanları küçükten büyüğe sıralanbilir.

 df2 <- df2[order(df2$OK_YETERLIK),]
 head(df2,15)
## # A tibble: 15 x 9
##    SINIF CINSIYET OK_YETERLIK ODOKUMA1 ST097Q01TA ST097Q02TA ST097Q03TA
##    <fct> <fct>          <dbl>    <dbl>      <dbl>      <dbl>      <dbl>
##  1 8     Kız           -2.44      280.          3          1          3
##  2 8     Kız           -2.44      360.          4          4          4
##  3 11    Erkek         -1.47      508.          3          3          3
##  4 9     Erkek         -1.10      425.          3          3          3
##  5 11    Kız           -1.10      441.          3          4          3
##  6 11    Erkek         -1.10      433.          3          4          4
##  7 9     Kız           -0.994     397.          4          1          1
##  8 10    Kız           -0.932     597.          3          3          2
##  9 9     Erkek         -0.801     384.          4          3          3
## 10 9     Erkek         -0.801     384.          4          3          3
## 11 10    Kız           -0.548     496.          3          4          4
## 12 9     Erkek         -0.442     462.          3          3          3
## 13 11    Erkek         -0.442     408.          3          3          3
## 14 8     Kız           -0.409     323.          3          1          4
## 15 9     Kız           -0.409     466.          3          4          2
## # ... with 2 more variables: ST097Q04TA <dbl>, ST097Q05TA <dbl>

Olusturulacak nokta grafiğinde noktaların hangi renkle gosterilmesi isteniyorsa bu tanımlanabilir. Bu tanılama veri setine color isimli bir sütunla eklenmiştir.

# Sınıf düzeylerine renk atanması

df2 <- mutate(df2,
 renk = ifelse(SINIF==8,"red",
               ifelse(SINIF==9,"blue",
                     ifelse( SINIF==10,"orange","black"))))

Nokta Grafiğinin Oluşturulması

# Sınıf düzeylerine renk atanması
attach(df2)
dotchart(OK_YETERLIK, cex=.7, groups=SINIF, color=renk, pch=19,
         main="Sınıflara Göre Puanları",
         xlab="Puanları")

Yogunluk grafigi (Density Plot)

Yogunluk grafiği çizebilmke için ilk olarak olasılık yogunluk fonksiyonu olan densityfonksiyonunun kullanılması gerekir.

# 8. sınıflar icin
d1 <- density(df2$ODOKUMA1[SINIF==8])
#olusan d1 nesnesinin x ve y degerleri ile grafik cizilir.
plot(d1, main=" Başarı Puanları 
     Yoğunluk Grafiği 8. Sınıf")
polygon(d1, col="red", border="black")

Grafik Birleştirme

Birde fazla grafiği tek bir alanda görmek için mfrow grafik parametresinden yararlanılır.

Bölünmek istenilen alan satır ve sütunlara gore ayrılabilir.

par(mfrow = c( satır sayısı,sutun sayısı))

Birinci satır birinci sutun

par(mfrow=c(2,2))

d1 <- density(df2$ODOKUMA1[SINIF==8])
plot(d1,main="Okuma Başarı Puanları Yoğunluk Grafiği 8. Sınıf")
polygon(d1, col="red", border="black")

Birinci satır ikinci sutun

par(mfrow=c(2,2))

d1 <- density(df2$ODOKUMA1[SINIF==8])
plot(d1,main="Okuma Başarı Puanları 
     Yoğunluk Grafiği 8. Sınıf")
polygon(d1, col="red", border="black")
d2 <- density(df2$ODOKUMA1[SINIF==9])
plot(d2, main="Okuma Başarı Puanları 
     Yoğunluk Grafiği 9. Sınıf")
polygon(d2, col="green", border="black")

İkinci satır birinci sutun

par(mfrow=c(2,2))


d1 <- density(df2$ODOKUMA1[SINIF==8])
plot(d1,main="Okuma Başarı Puanları 
     Yoğunluk Grafiği 8. Sınıf")
polygon(d1, col="red", border="black")
d2 <- density(df2$ODOKUMA1[SINIF==9])
plot(d2, main="Okuma Başarı Puanları 
     Yoğunluk Grafiği 9. Sınıf")
polygon(d2, col="green", border="black")
d3 <- density(df2$ODOKUMA1[SINIF==10])
plot(d3, main="Okuma Başarı Puanları 
     Yoğunluk Grafiği 10. Sınıf")
polygon(d3, col="blue", border="black")

İkinci satır ikinci sutun

par(mfrow=c(2,2))

d1 <- density(df2$ODOKUMA1[SINIF==8])
plot(d1,main="Okuma Başarı Puanları 
     Yoğunluk Grafiği 8. Sınıf")
polygon(d1, col="red", border="black")
d2 <- density(df2$ODOKUMA1[SINIF==9])
plot(d2, main="Okuma Başarı Puanları 
     Yoğunluk Grafiği 9. Sınıf")
polygon(d2, col="green", border="black")
d3 <- density(df2$ODOKUMA1[SINIF==10])
plot(d3, main="Okuma Başarı Puanları 
     Yoğunluk Grafiği 10. Sınıf")
polygon(d3, col="blue", border="black")

d4 <- density(df2$ODOKUMA1[SINIF==11])
plot(d4,main="Okuma Başarı Puanları 
     Yoğunluk Grafiği 11. Sınıf")
polygon(d4, col="yellow", border="black")

Grafik Kaydetme

Garfik kaydetme islemi graik alanındaki export sekmesi ile yapılabilmektedir.

Bunun haricinde jpeg(), pdf() gibi kaydedilecek dosya türüne özgü fonksiyonla da aynı işlem yapılabilir.

Grafikler spesifik bir fonksiyonla kaydedildiği zaman dev.off() fonksiyonu ile işlem sonlandırılmalıdır. Bu işlem grafik grafik alanında görüntülenmez.

Grafiği jpeg olarak kaydetmek

# kaydetme

jpeg("Ornek1.jpg")
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, 
     xlim=c(0,1000), ylim=c(-7,7),xlab="Okuma Basari Puanlari", ylab="Okuma oz Yeterligi")

dev.off()
## png 
##   2

Grafiği pdf olarak kaydetmek

# kaydetme

pdf("Ornek1.pdf") # Grafik boyutu kadar yer kaplar. 
plot(OK_YETERLIK ~ ODOKUMA1 , data=df2, 
     xlim=c(0,1000), ylim=c(-7,7),xlab="Okuma Basari Puanlari", ylab="Okuma oz Yeterligi")

dev.off()
## png 
##   2

Grafik kaydetmek isleminde sayfa boyutu da değiştirilebilir.

pdf("Ornek2.pdf", paper="a4") # A4 Sayfa boyutunda grafiği kaydeder. 

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


dev.off()
## png 
##   2

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