Bu hafta R ile veri analizi dersinde, “İleri Düzey Grafik
Örnekleri” başlığı altında plotly
kütüphanesi
kullanarak farklı veri görselleştirme yöntemlerini öğrendik.
Farklı analiz tekniklerini uyguladık ve R kodlarını çalıştırarak sonuçları grafikler üzerinde yorumladık.
Plotly kütüphanesi, hem 2D hem de 3D grafiklerde
oldukça modern ve etkileşimli görseller üretmemizi sağlıyor. Özellikle
Shiny
uygulamaları için büyük bir kolaylık
sunuyor.
plot_ly()
fonksiyonu, birden fazla argümanla
çalışarak çok farklı görselleştirme türleri üretmeme olanak sağladı.
Hem yoğunluk grafikleri, hem de kutu grafikleri gibi farklı
türlerde grafikler oluşturabildim.
plotly
, özellikle interaktif görselleştirme
açısından çok kullanışlı. Elde edilen grafiklerin çevrim içi paylaşımı
ve kullanıcı etkileşimli hale getirilmesi bu dersin en etkileyici
noktalarından biriydi.
Dersin devamında, “Kontrol Yapıları ve Döngüler” başlığı altında;
R’da koşul ifadeleri,
Döngüler ve tekrar eden işlemleri ele aldık.
Bu yapıların veri analizi ve programlamada nasıl kullanıldığını öğrendim ve farklı durumlara uygun kodlar yazarak pratik yaptım.
Aşağıda, iris veri setini kullanarak ders boyunca öğrendiğim kodlara benzer bir şekilde plotly ile bazı görselleştirmeye çalıştım.
library(dplyr)
library(tidyr)
library(tibble)
library(haven)
library(haven)
library(sjlabelled)
library(plotly)
veri_turlerine_gore <- iris %>% group_split(Species)
setosa_yogunluk <- density(veri_turlerine_gore[[1]]$Sepal.Length, na.rm = TRUE)
versicolor_yogunluk <- density(veri_turlerine_gore[[2]]$Sepal.Length, na.rm = TRUE)
virginica_yogunluk <- density(veri_turlerine_gore[[3]]$Sepal.Length, na.rm = TRUE)
# Yoğunluk Grafiği
plot_ly() %>%
add_lines(x = ~setosa_yogunluk$x, y = ~setosa_yogunluk$y, name = "Setosa", fill = 'tozeroy') %>%
add_lines(x = ~versicolor_yogunluk$x, y = ~versicolor_yogunluk$y, name = "Versicolor", fill = 'tozeroy') %>%
add_lines(x = ~virginica_yogunluk$x, y = ~virginica_yogunluk$y, name = "Virginica", fill = 'tozeroy') %>%
layout(xaxis = list(title = "Sepal Uzunluğu"),
yaxis = list(title = "Yoğunluk"))
iris %>%
plot_ly(x = ~Sepal.Length,
y = ~Sepal.Width,
color = ~factor(Species),
colors = "Set1") %>%
add_markers() %>%
layout(
legend = list(title = list(text = '<b> Türler </b>')),
xaxis = list(
title = "Sepal Uzunluğu",
range = c(4, 8)
),
yaxis = list(
title = "Sepal Genişliği",
range = c(2, 4.5)))
iris %>%
mutate(Sepal.Length.Group = cut(Sepal.Length, breaks = seq(4, 8, by = 0.5))) %>%
count(Species, Sepal.Length.Group) %>%
plot_ly(x = ~Sepal.Length.Group,
y = ~n,
hoverinfo = "y",
color = ~factor(Species)) %>%
add_bars() %>%
layout(
legend = list(
title = list(text = '<b> Türler </b>')
),
xaxis = list(
title = "Sepal Uzunluğu Aralığı"
),
yaxis = list(
title = "Frekans",
range = c(0, 30)))
if
, else
, ifelse
gibi
yapıların doğru şekilde nasıl uygulanacağını öğrendim.1. Koşula Göre Değer Atama
set.seed(42)
sayisal_deger <- runif(1, 0, 10)
if(sayisal_deger > 5) {
sonuc <- "Büyük"
} else {
sonuc <- "Küçük veya Eşit"
}
2. Bir Sayının Çarpmaya Göre Tersini Bulma
a <- 0
if(a != 0) {
ters <- 1 / a
cat(a, "sayısının çarpmaya göre tersi:", ters)
} else {
cat(a, "sayısının çarpmaya göre tersi tanımsızdır.")
}
## 0 sayısının çarpmaya göre tersi tanımsızdır.
Döngüler, işlemleri tekrarlamak için kullanılır. Bu hafta for döngü yapılarını inceledik.
Örnek:
## 1 + 1 = 2
## 2 + 2 = 4
## 3 + 3 = 6
## 4 + 4 = 8
## 5 + 5 = 10
## 6 + 6 = 12
## 7 + 7 = 14
## 8 + 8 = 16
## 9 + 9 = 18
## 10 + 10 = 20
Matris Satır Toplamlarını Hesaplama
matris <- matrix(1:10, nrow = 5, byrow = TRUE)
satir_toplamlari <- numeric(nrow(matris))
for (i in 1:nrow(matris)) {
satir_toplamlari[i] <- sum(matris[i, ])
}
cat("Satır Toplamları:", satir_toplamlari)
## Satır Toplamları: 3 7 11 15 19
Vektördeki Değerleri Test Etme
set.seed(101)
sayilar <- sample(-10:10, 15, replace = TRUE)
sonuclar <- ifelse(sayilar > 0, "Pozitif",
ifelse(sayilar < 0, "Negatif", "Sıfır"))
cat("Sayılar:", sayilar, "\nSonuçlar:", sonuclar)
## Sayılar: -2 3 6 -8 -8 -2 -8 -8 -9 9 10 6 3 1 -10
## Sonuçlar: Negatif Pozitif Pozitif Negatif Negatif Negatif Negatif Negatif Negatif Pozitif Pozitif Pozitif Pozitif Pozitif Negatif
Tek veya Çift Sayıları Belirleme
set.seed(41)
sayi_listesi <- sample(1:100, 20)
tek_cift <- ifelse(sayi_listesi %% 2 == 0, "Çift", "Tek")
cat("Sayılar:", sayi_listesi, "\nTek/Çift Durumu:", tek_cift)
## Sayılar: 40 35 5 96 72 58 29 70 22 59 31 45 82 85 92 89 76 17 68 52
## Tek/Çift Durumu: Çift Tek Tek Çift Çift Çift Tek Çift Çift Tek Tek Tek Çift Tek Çift Tek Çift Tek Çift Çift
Final ve Vize Notlarına Göre Geçme Durumu
Derste yaptığım;
vize <- c(60, 70, 80, 90, 55)
final <- c(45, 65, 70, 50, 80)
devam <- c(14, 10, 13, 12, 11)
gecme_notu <- ifelse(devam >= 11 & final >= 50,
final * 0.6 + vize * 0.4,
ifelse(devam < 11,
final * 0.6,
NA))
cat("Geçme Notları:", gecme_notu, sep = "\n")
## Geçme Notları:
## NA
## 39
## 74
## 66
## 70
for ile yaptığım
vize <- c(60, 70, 80, 90, 55)
final <- c(45, 65, 70, 50, 80)
devam <- c(14, 10, 13, 12, 11)
gecme_notlari <- numeric(length(vize))
for (i in 1:length(vize)) {
if (devam[i] >= 11) {
gecme_notlari[i] <- final[i] * 0.6 + vize[i] * 0.4
} else {
gecme_notlari[i] <- final[i] * 0.6
}
}
cat("Geçme Notları:", gecme_notlari)
## Geçme Notları: 51 39 74 66 70
Döngü ile İşlem Takibi Sorusu (derste yapıldı)
islem_takibi <- character(10)
for (i in 1:10) {
islem_takibi[i] <- paste("İşlem", i, "tamamlandı")
}
cat(islem_takibi, sep = "\n")
## İşlem 1 tamamlandı
## İşlem 2 tamamlandı
## İşlem 3 tamamlandı
## İşlem 4 tamamlandı
## İşlem 5 tamamlandı
## İşlem 6 tamamlandı
## İşlem 7 tamamlandı
## İşlem 8 tamamlandı
## İşlem 9 tamamlandı
## İşlem 10 tamamlandı
Önemli Notlar
## [1] "a"
## [1] "b"
## [1] "c"
## [1] "d"
## [1] "a"
## [1] "b"
## [1] "c"
## [1] "d"
Deneme
## 1 + 1 = 2
## 2 + 2 = 4
## 3 + 3 = 6
## 4 + 4 = 8
## 5 + 5 = 10
## 6 + 6 = 12
## 7 + 7 = 14
## 8 + 8 = 16
## 9 + 9 = 18
## 10 + 10 = 20
Deneme
## [1] "1 + 1 = 2"
## [1] "2 + 2 = 4"
## [1] "3 + 3 = 6"
## [1] "4 + 4 = 8"
## [1] "5 + 5 = 10"
## [1] "6 + 6 = 12"
## [1] "7 + 7 = 14"
## [1] "8 + 8 = 16"
## [1] "9 + 9 = 18"
## [1] "10 + 10 = 20"
Deneme
## [,1] [,2]
## [1,] 1 21
## [2,] 2 22
## [3,] 3 23
## [4,] 4 24
## [5,] 5 25
# Satır çarpımlarını hesaplayıp yazdırma
for (i in 1:nrow(matris)) {
carpim <- prod(matris[i, ]) # Satırdaki elemanların çarpımı
cat(i, "satirdaki degerlerin carpimi", carpim, "olarak hesaplanmistir.\n")
}
## 1 satirdaki degerlerin carpimi 2 olarak hesaplanmistir.
## 2 satirdaki degerlerin carpimi 12 olarak hesaplanmistir.
## 3 satirdaki degerlerin carpimi 30 olarak hesaplanmistir.
## 4 satirdaki degerlerin carpimi 56 olarak hesaplanmistir.
## 5 satirdaki degerlerin carpimi 90 olarak hesaplanmistir.
Deneme
## [,1] [,2]
## [1,] 1 21
## [2,] 2 22
## [3,] 3 23
## [4,] 4 24
## [5,] 5 25
## 1. satirdaki sayilarin carpimi =21
## 2. satirdaki sayilarin carpimi =44
## 3. satirdaki sayilarin carpimi =69
## 4. satirdaki sayilarin carpimi =96
## 5. satirdaki sayilarin carpimi =125
. SON NOT
Bu derste ve takip eden iki hafta içerisinde;