# install.packages("tidyverse", repos="https://cran.rstudio.com") # paketin yüklenmesi
library("tidyverse") # paketin aktifleştirilmesi
library(dplyr)
library(magrittr)
library(haven)
library(plotly)
load("import/PISA_OGR_2018.rda")
miniPISA <- PISA_OGR_2018 %>%
select(CINSIYET, SINIF,KITAPSAYISI, SES, Anne_Egitim, Baba_Egitim,Okuloncesi_yil,OKUL_TUR,OKUMA_ZEVK,
OK_YETERLIK,ODOKUMA1)
# kategorik değişkenlerin faktör olarak kaydı
miniPISA<- miniPISA %>% mutate_if(is.labelled, sjlabelled::as_factor)
# Faktör değiskenlere düzey atama amacıyla yazılan fonksiyon
levelsnames <- function(x){
levels(x) <- names(attr(x,"labels"))
x
}
# yazılan fonksiyonun faktör değişkenlere uygulanması
miniPISA <-mutate_if(miniPISA,is.factor, levelsnames)
head(miniPISA)
özelleştirmeler + ile ekleniyor
#qplot(x, y, data, geom)
#ggplot(x, y, data, geom)
#ggplot( data, aes(x, y)) + geom.grafikismi()
#ggplot(x, y, data, geom="density")
#ggplot( data, aes(x, y)) + geom.density()
ggplot(miniPISA, aes(x=ODOKUMA1))+
geom_density(linetype=5, fill="darkorange")+
theme_bw()
### apa formatında plot
library(papaja)
## Warning: package 'papaja' was built under R version 4.3.3
## Loading required package: tinylabels
## Warning: package 'tinylabels' was built under R version 4.3.3
ggplot(miniPISA, aes(x=ODOKUMA1))+
geom_density(linetype=5, fill="darkorange")+
theme_apa()
grafik_1 <- ggplot(miniPISA, aes(x=ODOKUMA1)) #ilk katmanın oluşturulması
grafik_1 # oluşturulan nesnenin kaydedilmesi
grafik_1 + geom_histogram() # histogram çizilmesi
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
### yüzey (facet) ekleme
facet_wrap(~değişken, ncol=n)
facet_wrap(~değişken, nrow=n)
grafik_1 +
geom_histogram() +
facet_wrap(~CINSIYET, ncol=2) # cinsiyet değişkenindeki faktörlerin sütunda yer alması
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
grafik_1 +
geom_histogram() +
facet_wrap(~CINSIYET, nrow=2) # cinsiyet değişkenindeki faktörlerin satırda yer alması
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
library(haven)
miniPISA <-
miniPISA %>%
mutate_if(is.labelled, funs(as_factor(.)))
## Warning: `funs()` was deprecated in dplyr 0.8.0.
## ℹ Please use a list of either functions or lambdas:
##
## # Simple named list: list(mean = mean, median = median)
##
## # Auto named with `tibble::lst()`: tibble::lst(mean, median)
##
## # Using lambdas list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
ggplot(miniPISA, aes(x=ODOKUMA1)) +
geom_histogram()+ #histogram çizilmesi
facet_grid(SINIF~CINSIYET) # sınıf ve cinsiyete göre yüzey eklenmesi
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(miniPISA %>% filter(SINIF=="SINIF 9"),aes(x=ODOKUMA1) ) +
geom_histogram()+
facet_wrap(~CINSIYET)+theme_apa()
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(miniPISA %>% filter(SINIF=="SINIF 9"),aes(x=ODOKUMA1) ) +
geom_histogram()+
facet_grid(CINSIYET~KITAPSAYISI)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
ggplot(miniPISA %>% filter(SINIF=="SINIF 9"),aes(x=ODOKUMA1) ) +
geom_histogram()+
facet_grid(CINSIYET~.)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
### ggplot’un arayüzlü kullanımı
library(esquisse)
## Warning: package 'esquisse' was built under R version 4.3.3
#esquisser()
library(dplyr)
library(magrittr)
library(ggplot2)
p1 <- ggplot(
miniPISA %>%
group_by(SINIF,CINSIYET) %>%
mutate(ort=mean(ODOKUMA1)) %>% # ortalama puanların sütun olarak ekleme
ungroup(), # gruplamanın iptal edilmesi
aes(x=SINIF, y=ort, color=CINSIYET )) + # cinsiyete göre sınıf düzeyinde ortalamaların verilmesi
geom_point() + #saçılım grafiği oluşturma
xlab("Sınıf Düzeyi")+ # x eksenine etiket verilmesi
ylab("Ortalama Puan")+ #y eksenine etiket verilmesi
ggtitle("Sınıf Ortalamalarının Cinsiyete Göre")
p1 # nesnenin kaydedilmesi
ggplot(miniPISA,aes(x=ODOKUMA1, y=OKUMA_ZEVK, color=CINSIYET)) +
geom_point() + #saçılım grafiği çizilmesi
facet_grid(.~SINIF)
## Warning: Removed 69 rows containing missing values or values outside the scale range
## (`geom_point()`).
p2 <- ggplot(miniPISA, aes(x=SINIF, y=ODOKUMA1)) + # x ve y eksenlerini belirleme
geom_point() # saçılım grafiği çizme
p2
Size parametresi ile büyüklük shape parametresi ile şekil düzenlemesi yapılabilmektedir. Default değerleri sırasıyla 1 ve noktadır. Bir örnek veri seti üzerinden bu parametrelerin kullanımlarını inceleyelim.
ggplot(miniPISA, aes(CINSIYET, OK_YETERLIK)) +
geom_point(color = "blue",size=5, shape="a") # saçılım grafiğinin rengini,
## Warning: Removed 199 rows containing missing values or values outside the scale range
## (`geom_point()`).
Estetik, çizilmiş verinin görsel bir özelliğini ifade etmektedir. ggplot2 paketinin kullandığı estetik özellikler bulunmaktadır. Bunlar; color nokta ve diğer şekillerin renklerini, fill sekil içi doldurma rengini, size noktaların büyüklüğünü, çizgilerin kalınlığı/inceliğini, alpha saydamlık derecesini, linetype kesikli çizgi tiplerini, labels eksen veya grafik etiketlerini, shape şekilleri görselleştirmede kullanılır. Buradaki “estetik”, geomlarda/şekillerde çizilen verileri de kapsamaktadır. Bu argümanların çoğu geom içerisinde kullanılır.
ggplot2 paketinde, scale_*() fonksiyonları çeşitli çizim estetiğinin ölçeklerini özelleştirmek için kullanılır. Bu fonksiyonlar, ggplot’unuzdaki eksenlerin, etiketlerin ve diğer görsel öğelerin görünümünü ve davranışını kontrol etmenizi sağlar.
Yaygın olarak kullanılan bazı scale_*() fonksiyonları amaçlarıyla birlikte verilmiştir. Bu fonksiyonlar, grafiklerinizin görünümünde ince ayar yapmak ve iletmek istediğiniz bilgileri etkili bir şekilde iletmelerini sağlamak için esnek bir yol sağlar.
scale_x_continuous() ve scale_y_continuous(): Bu fonksiyonlar, sürekli değişkenler için x ve y eksenlerinin ölçeklerini özelleştirmek için kullanılır. Sınırları, kesmeleri, etiketleri ve diğer özellikleri belirtebilirsiniz. Örneğin scale_x_continuous(limits = c(0, 10), breaks = seq(0, 10, by = 2)) kodu ile x ekseni limitlerini ve kesim noktalarını belirler.
scale_x_discrete() ve scale_y_discrete(): Bu fonksiyonlar x ve y eksenlerindeki kategorik(factor) değişkenler için kullanılır. Eksen etiketlerinin ve adlarının görünümünü özelleştirmenize olanak tanırlar. Örneğin scale_x_discrete(labels = c(“A”, “B”, “C”)) kodu ile kategorik(faktor) değişkenin düzeyi değiştirilebilir.
scale_color_() ve scale_fill_(): Bu fonksiyonlar, renk ve dolgu gibi farklı estetikler için renk ölçeklerini özelleştirmek için kullanılır. Renk paletlerini, etiketler ve diğer özellikleri değiştirebilirsiniz. Örneğin scale_color_manual(values = c(“red”, “blue”, “green”)) üç düzeyli bir kategorik değişkeninin renklerini ayarlar.
scale_size() ve scale_size_continuous(): Bu fonksiyonlar bir çizimdeki öğelerin boyutunu özelleştirmek için kullanılır.
scale_shape(): Bu fonksiyon, bir dağılım grafiğindeki noktaların şeklini özelleştirmek için kullanılır. Şekiller ile aşağıda yer alan 24 değer kullanılabilir.
sekiller <- data.frame(sekil = 0:24)
ggplot(sekiller, aes(0, 0, shape = sekil)) +
geom_point(aes(shape = sekil), size = 5, fill = 'red') +
scale_shape_identity() +
facet_wrap(~sekil) +
theme_void()
ggplot(miniPISA, aes(x = ODOKUMA1,y = OK_YETERLIK, color = CINSIYET)) +
geom_point(position = "jitter") +
scale_color_manual(values = c("red", "blue"))
## Warning: Removed 199 rows containing missing values or values outside the scale range
## (`geom_point()`).
limits argümanı ile sınırlar belirlenir. Örneğin x ekseninin minimum ve maksimum değerleri belirlenmek isteniyorsa aşağıdaki örnekteki gibi bu argüman kullanılır.
ggplot(miniPISA, aes(x = ODOKUMA1,y = OK_YETERLIK,color = CINSIYET)) + # cinsiyete göre gruplandırma
geom_point(position = "jitter") + # üst üste gelen noktaları kaydırma
scale_x_continuous("Okuma Puanları",limits = c(100,900)) + # x eksenindeki okuma puanlarını sınırlandırma
scale_color_discrete("Cinsiyet",labels=c("KIZ","ERKEK")) # cinsiyete göre
## Warning: Removed 199 rows containing missing values or values outside the scale range
## (`geom_point()`).
breaks=seq() fonksiyonu ile eksenin sınırları ve ayrımı belirlenir. seq() içine sırasıyla eksenin başlayacağı sayı, biteceği sayı ve kaçar kaçar ilerleneceği yazılır.
ggplot(miniPISA, aes(x = ODOKUMA1,
y = OK_YETERLIK,
color = CINSIYET)) +
geom_point(position = "jitter") +
scale_x_continuous("Okuma Puanları",limits = c(100,900),
breaks=seq(100,900,100)) +
scale_color_discrete("Cinsiyet")
## Warning: Removed 199 rows containing missing values or values outside the scale range
## (`geom_point()`).
Çıktıda görüldüğü üzere x ekseninde okuma puanları, y ekseninde okuma yeterlik puanları yer alacak seçilde saçılım grafiği çizilmiştir. x ekseni 100 ile 900 arasında sınırlandırılmış ve 100’er 100’er ayrılmıştır. Cinsiyet değişkenine göre gruplandırma yapıldığından kız ve erkek öğrencilere ait saçılım grafiği verilmiştir.
expand argümanı ile genişletme yani birleştirme yapılır. Aşağıdaği örnekte expand=c(0,0) ile x eksen limitleri değiştirilmiştir.
ggplot(miniPISA, aes(x = ODOKUMA1,
y = OK_YETERLIK,
color = CINSIYET)) +
geom_point(position = "jitter") +
scale_x_continuous("Okuma Puanları",limits = c(100,900),
breaks=seq(100,900,100), expand=c(0,0)) +
scale_color_discrete("Cinsiyet")
## Warning: Removed 199 rows containing missing values or values outside the scale range
## (`geom_point()`).
labs argümanı ile etiketleme eklenir. Grafik eksenleri (x ve y), başlık(title), alt başlık(subtitle) ve grup (color) isimlendirmeleri yapılır.
ggplot(miniPISA, aes(x = ODOKUMA1,
y = OK_YETERLIK,
color = CINSIYET)) +
geom_point(position = "jitter") +
labs(x = "\nBasari Puanları",
y = "\nYeterlik Puanları",
color = "Grup")
## Warning: Removed 199 rows containing missing values or values outside the scale range
## (`geom_point()`).
ggplot(miniPISA, aes(CINSIYET, fill = SINIF)) + geom_bar() + # bar grafiği
labs(x = "Cinsiyet",
y = "Frekans") #etiketleme yapılması
Grafik ile veri eşlemesi aynı zamanda mapping= argümanı ile de yapılabilir.
ggplot(data = miniPISA, mapping = aes(x = CINSIYET)) +
geom_bar()
Elde edilen çıktıda x ekseninde cinsiyet y ekseninde ise frekansların yer aldığı görülmektedir. Şimdi y ekseninde frekans değerleri yerine yüzde değerlerini alalım.
ggplot(data = miniPISA, mapping = aes(x = CINSIYET)) +
geom_bar(aes(y = (..count..)/sum(..count..)))+
scale_y_continuous(name = "Yüzde", labels=scales::percent)
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
bölgeleri renklendirme
ggplot(miniPISA, aes(CINSIYET, fill = SINIF)) +
geom_bar() +
labs(x = "Cinsiyet",
y = "Frekans") +
scale_fill_manual("CINSIYET", values = c("red","blue","orange","green",
"darkblue","purple"))