Çalışma kapsamında Türkiye’de son 1 yıl içerisinde gerçekleşen depremlerin keşifsel veri analizi yapılmıştır. Bu çalışmada prettydoc paketinde bulunan cayman teması kullanılarak R Markdown üzerinde html uzantılı raporlama yapılmıştır.

1 Yüklenen Kütüphaneler

Aşağıdaki R kod bloğunun çalıştırılmasından sonra kütüphanelerin yüklenip yüklenmediğine dair aşağıdaki gibi mantıksal vektör sonuçları gelecektir. Eğer mantıksal vektör sonuçlarının hepsi TRUE ise kütüphanelerin hepsini yüklenmiştir demektir. Kolaylık sağlaması açısından yukarıda kütüphanelerin yüklenmesini gösterir tabloyu da elde etmek ve daha kolay okumanız için yukarıdaki kod bloğu içerisinden kısa bir kod yazdım. Bu kod çalıştırıldığında aşağıdaki tabloda görüleceği üzere bütün kütüphaneler yüklenmiştir. Eğer ilgili kütüphane yüklenmemiş olursa “Paket Kurulumu Gerekli” ifadesi satırda yazacaktır. Satırda yazan bu uyarı metnine göre paketi ya kurar yada yüklersiniz. Bir paketin kurulması ile yüklenmesinin aynı şey olmadığını burada ifade etmek gerekir konuyu yabancı olanlar için. Paket kurulumu ilk defa yapılan bir işlem iken, paketin yüklenmesi zaten kurulan bir paketin yüklenmesi yani çalışır duruma getirilmesidir. İlk defa bir paket kurulumu gerçekleştiriliyorsa install.packages() fonksiyonunu, zaten bir paket kurulumu gerçekleştirilmiş ise ilgili paketin veya kütüphanenin yüklenmesi veya okunması için library() veya require() fonksiyonlarını kullanıyoruz. Fonksiyonlardaki parantez () içerisine yüklenecek paket veya kütüphane adını yazıyoruz.

kütüphane<-c("dplyr","tibble","tidyr","ggplot2","ggthemes","readr","readxl","ggpubr","ggstance","writexl", "psych","RColorBrewer", "htmlwidgets","kableExtra","readr", "leaflet", "plotly", "leaflet.extras", "DT")
yükle<-sapply(kütüphane, require, character.only = TRUE, warn.conflicts = FALSE)
## Warning: package 'ggpubr' was built under R version 4.0.5
## Warning: package 'leaflet.extras' was built under R version 4.0.5
#Kütüphane yüklenme durumunu gösteren tablo
 
tablo=suppressWarnings(yükle, classes = "warning")
   
isim=names(tablo)
   
deger=as_tibble(tablo)
   
data.frame(sıra=1:length(isim), kütüphane=isim, yuklenme_durumu=deger$value) %>% mutate(yuklenme_durumu=if_else(yuklenme_durumu==TRUE, "Yüklendi", "Paket Kurulumu Gerekli")) %>% kbl(caption = "Kütüphane Yüklenme Bilgisi") %>% kable_classic_2(full_width = F, html_font="arial")
Kütüphane Yüklenme Bilgisi
sıra kütüphane yuklenme_durumu
1 dplyr Yüklendi
2 tibble Yüklendi
3 tidyr Yüklendi
4 ggplot2 Yüklendi
5 ggthemes Yüklendi
6 readr Yüklendi
7 readxl Yüklendi
8 ggpubr Yüklendi
9 ggstance Yüklendi
10 writexl Yüklendi
11 psych Yüklendi
12 RColorBrewer Yüklendi
13 htmlwidgets Yüklendi
14 kableExtra Yüklendi
15 readr Yüklendi
16 leaflet Yüklendi
17 plotly Yüklendi
18 leaflet.extras Yüklendi
19 DT Yüklendi

2 Yoğunluk Haritaları Oluşturma

2.1 Depremlerin olduğu yerler

Bu kısımda haritanın oluşturulmasında plotly paketi kullanılmıştır.

deprem <- read_table("deprem.txt")%>% rename(Latitude="Latit(N)",Longitude="Long(E)")
## 
## -- Column specification --------------------------------------------------------
## cols(
##   Date = col_character(),
##   Time = col_time(format = ""),
##   `Latit(N)` = col_double(),
##   `Long(E)` = col_double(),
##   `Depth(km)` = col_double(),
##   MD = col_character(),
##   ML = col_double(),
##   Mw = col_character(),
##   Region = col_character()
## )
sekil <- deprem %>%
  plot_ly(
    type = 'densitymapbox',
    lat = ~Latitude,
    lon = ~Longitude,
    coloraxis = 'coloraxis',
    radius = 5) 
sekil <- sekil %>%
  layout(
    mapbox = list(
      style="stamen-terrain",
      zoom =4,
      center= list(lon =36 , lat = 40)))

sekil

## Deprem büyüklüklerine göre iller

Bu kısımda haritanın oluşturulmasında leaflet paketi kullanılmıştır.

deprem %>% leaflet() %>% addTiles() %>% addCircles(data=deprem, radius = deprem$ML, labelOptions = labelOptions(noHide = T, direction = 'top'))
## Assuming "Longitude" and "Latitude" are longitude and latitude, respectively

2.2 Büyüklüğü 3 ve Üzerinde Olan Depremler

Bu kısımda haritanın oluşturulmasında leaflet paketi kullanılmıştır.

d=deprem %>% filter(ML>3)
  

d %>% leaflet() %>% addTiles() %>%
  addCircleMarkers(data=d,
    label=d$ML,
    labelOptions = labelOptions(noHide = T, direction = 'top'))
## Assuming "Longitude" and "Latitude" are longitude and latitude, respectively

2.3 Büyüklüğü 3 ve Üzerinde Olan Depremlerin Derinliği

Bu kısımda haritanın oluşturulmasında leaflet paketi kullanılmıştır.

d=deprem %>% filter(ML>3)
d %>% leaflet() %>% addTiles() %>%
  addCircleMarkers(data=d,
    label=d$`Depth(km)`,
    labelOptions = labelOptions(noHide = T, direction = 'top'))%>%
 addLegend(
    colors = "#E84A5F",
    labels = "3 ve Üzerindeki Depremlerin Derinlikleri",
    title = "Derinlikler",
    opacity = 1, 
    position = "bottomleft"
  )
## Assuming "Longitude" and "Latitude" are longitude and latitude, respectively

2.4 Deprem Büyüklüklerine Göre Isı Haritası Oluşturma

Aşağıda leaflet.extras paketinden gelen fonksiyonlardan ilki addSearchOSM() olup harita üzerinde aramaya yapmaya, addReverseSearchOSM() fonksiyonu ise mouse ile seçilen yerin adını göstermekte, addResetMapButton() fonksiyonu ise harita aramalarının resetlenmesini sağlamaktadır.

leaflet(deprem) %>%
  addTiles() %>%
  addHeatmap(lng = ~Longitude, lat = ~Latitude, radius = 5, intensity = ~ML) %>% addSearchOSM() %>% addReverseSearchOSM() %>% addResetMapButton()

2.5 Deprem Verisinin İndirilmesi

Bu kısımda DT paketi ile veri hem html tablo olarak görselleştirilebilir hem de csv, xlsx, pdf formatlarında indirilebilmektedir. Ayrıca veriyi kopyalayabilir ya da yazdırabilirsiniz. Bu tamamıyla size kalmış :)

tablo=deprem[,c(-6,-8)]
datatable(tablo,  class = 'cell-border stripe', filter = 'top', extensions = 'Buttons', colnames = c('Sıra' = 1,'Tarih' = 2, 'Zaman' = 3, 'Enlem' = 4, 'Boylam' = 5,'Depremin Derinliği (km)' = 6, 'Depremin Büyüklüğü' = 7, 'Yeri' = 8), caption = 'Veri Kaynağı: Boğaziçi Üniversitesi Kandilli Rasathanesi (http://www.koeri.boun.edu.tr/scripts/lst4.asp)', options = list(
    dom = 'Bfrtip',
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),searching = FALSE, pageLength = 10
  )
) %>%
  formatStyle(
    'Depremin Büyüklüğü',
    background = styleColorBar(tablo$ML, 'lightgreen'),
    backgroundSize = '100% 90%',
    backgroundRepeat = 'no-repeat',
    backgroundPosition = 'center')%>%
    formatDate('Tarih', 'toLocaleDateString')

3 Sonuç

Ağırlıklı olarak leaflet, plotly ve DT kütüphanelerinin kullanıldığı bu R Markdown çalışmasının özellikle veri bilimi (data science) ile ilgilenen akademi ve saha çalışanlarına bir katkı sunacağı düşünülmektedir.

Faydalı olması ve farkındalık oluşturması dileğiyle.

Bilimle ve teknolojiyle kalınız.

Saygılarımla…

Not: Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.

Note: It can not be cited or copied without referencing.

4 Yararlanılan Kaynaklar

  1. https://github.com/yixuan/prettydoc/
  2. https://bookdown.org/yihui/rmarkdown-cookbook/equatiomatic.html
  3. https://rmd4sci.njtierney.com/math
  4. https://cran.r-project.org/web/packages/kableExtra/vignettes/awesome_table_in_html.html#Add_header_rows_to_group_columns
  5. https://tevfikbulut.com/2020/07/12/rda-multinominal-lojistik-regresyon-uzerine-bir-vaka-calismasi-a-case-study-on-multinominal-logistic-regression-in-r/
  6. https://cran.r-project.org/web/packages/prettydoc/index.html
  7. https://rmarkdown.rstudio.com/docs/
  8. https://plotly.com/r/mapbox-density-heatmaps/
  9. Veri Kaynağı: http://www.koeri.boun.edu.tr/scripts/lst4.asp. Ulaşiım Tarihi: 20.06.2021
  10. http://timelyportfolio.github.io/rCharts_nyt_home_price/
  11. https://cran.r-project.org/web/packages/leaflet/leaflet.pdf
  12. https://www.r-graph-gallery.com/242-use-leaflet-control-widget.html
  13. https://cran.r-project.org/web/packages/DT/DT.pdf
  14. https://rstudio-pubs-static.s3.amazonaws.com/626890_d49a2c5372d14c74bf7a09136402616c.html