Logo Logo
  • Ana Sayfa
  • Hakkında
  • Kategoriler
    • Genel
    • İstatistik
    • Makine Öğrenme
    • Model Geliştirme
    • Sağlık
    • Teknoloji
  • Tüm Yazılarım
  • İletişim

İletişim

  • Email buluttevfik@gmail.com

Site Haritası

  • Ana Sayfa
  • Hakkında
  • İletişim

Sosyal Medya Adresleri

R’da Leaflet Paketi ile Harita Üzerinde Dinamik Etiketleme: Dynamic Tagging on Maps Using Leaflet Packages in R

  • ANA SAYFA
  • Blog Details
Temmuz 6 2021
  • İstatistik

Çalışma kapsamında ağırlıklı olarak leaflet, leaflet.extras, leaflet.extras2 ve mapview paketleri kullanılarak harita üzerinde etiketleme çalışmaları ile farklı formatta kaydetme çalışmaları yapılmıştır. Çalışmada R Markdown üzerinde R programlama dili kullanılmıştır.

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 tamamı yüklenmiştir. Kolaylık sağlaması açısından aşağıdaki kütüphanelerin yüklenmesini gösterir tabloyu da elde etmek ve daha kolay okumanız için aşağıdaki kod bloğu içerisinde 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 tablo satırında 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. Aşağıda yazılan kod bloğunda c() vektörü içerisine yüklenecek paket veya kütüphane adını yazıyoruz.

kütüphane<-c("dplyr","tibble","tidyr","ggplot2","readr","RColorBrewer","crosstalk","leaflet","DT", "htmlwidgets","kableExtra","readr", "leaflet.extras", "sf", "plotly", "leafpop", "downloadthis", "tidygeocoder", "leaflet.extras2")
yükle<-sapply(kütüphane, require, character.only = TRUE, warn.conflicts = FALSE)
 
#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, "Yuklendi", "Paket Kurulumu Gerekli")) %>% kbl(caption = "Kütüphane Yüklenme Bilgisi") %>% kable_classic_2(full_width = F, html_font="arial")

Yukarıdaki kod bloğunun çalıştırılmasından sonra kütüphane yüklenme bilgisi aşağıdaki tabloda verilmiştir.

Veri Setinin Oluşturulması

Bu kısımda sentetik veri seti üretilerek bu veri seti üzerinde haritalama çalışmaları yapılmıştır.

deneme <- data.frame(
  Firma = rep(c("Ulusoy", "Metro", "Süzer", "Kanberoğlu"),3),
  Adres = rep(c("Ankara","İstanbul","Artvin","Rize"), 3),
  Tur=rep(c("A","B"),6),
  Ciro =rep(c(10000, 12500,30000,40000, 60000,80000),2)) %>%
  tidygeocoder::geocode(address = Adres, method = "osm", verbose = TRUE)
deneme

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen veri seti aşağıdaki tabloda verilmiştir. Kod bloğunda tidygeocoder::geocode() fonksiyonunun kullanılmasının nedeni illere göre enlem (lat) ve boylam (long) bilgisinin alınarak veri setine iki ayrı değişken olarak eklenmek istenmesidir. Doğal olarak enlem ve boylam bilgisi olmadan harita oluşturamıyoruz.

Haritanın Oluşturulması

leaflet(deneme) %>%
  addTiles(group = "OpenStreetMap") %>%
    addPulseMarkers(lng =~long, lat=~lat,  icon = makePulseIcon(), label=paste(deneme$Firma,"firmasının cirosu:", deneme$Ciro), labelOptions = labelOptions(noHide = F, direction = 'top', style = list(
        "color" = "green",
        "font-family" = "calibri",
        "font-style" = "bold",
        "box-shadow" = "3px 3px rgba(0,0,0,0.25)",
        "font-size" = "15px",
        "border-color" = "rgba(0,0,0,0.5)"
      ))) %>%
  addMiniMap() %>%  
  addSearchOSM() %>% 
  addReverseSearchOSM() %>% 
  addResetMapButton() %>% 
  addSearchGoogle()

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen harita aşağıda verilmiştir. R Studio üzerinde çalıştırıldığında harita üzerinde bulunan kırmızı işaretleyiciler yanıp sönmektedir. Bunun için addPulseMarkers() fonksiyonu kullanılmıştır. Ayrıca il üzerine tıklandığında açılan bir etiket tanımlanmıştır. Bu etiket atama işlemi ise label=paste(deneme$Firma,”firmasının cirosu:”, deneme$Ciro) fonksiyonu ile yapılmıştır. Yani kırmızı kutu üzerine işaretleyiciler üzerine tıklandığında Firma adı ile birlikte cirosu görünecektir. addMiniMap() fonskiyonu ile de harita üzerinde mini bir harita oluşturulmuştur.

Haritada il üzerine tıklandığında açılan bir etiket aşağıdaki gibi olacaktır. Eğer etiketleri harita üzerinde sabitlemek istiyorsak labelOptions = labelOptions(noHide = T) fonksiyonunu yazmamız yeterlidir.

Belirli Bir Bölgenin Kare İçine Alınarak İşaretlenmesi I

Yukarıda yapılan işlemlerden farklı olarak faydalı olabilir düşüncesiyle harita üzerinde belirli koordinatlara sahip bir bölgenin kare içerisine alınması işlemini de göstermek istiyorum. Bu uygulama için Türkiye örneği üzerinden gidelim.

leaflet() %>% addTiles() %>%
  addRectangles(
    lng1=25, lat1=35,
    lng2=45, lat2=43,
    fillColor = "transparent", color="red", label="TÜRKİYE'NİN YAKLAŞIK KOORDİNATLARI", labelOptions = labelOptions(noHide = T, direction = 'top')
  )

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Türkiye haritası kare içerisine alınmış bir şekilde aşağıda verilmiştir. Kare içerisine alınma işlemi addRectangles() fonksiyonu ile yapılmaktadır. Burada enlem ve boylamlar sırasıyla kuzey ve güney, ve aynı zamanda doğu ve batı şeklinde belirlenmelidir.

Belirli Bir Bölgenin Kare İçine Alınarak İşaretlenmesi II

Bu kısımda bir öncekinden farklı olarak kare içerisine alınmış bölgenin etiketi stilize edilmiştir. Bu amaçla aşağıda da görüleceği üzere addRectangles() fonskiyonu içerisinde tanımlanmış labelOptions parametresi içerisinde tanımlanmış style alt parametrisi kullanılmıştır.

leaflet() %>% addTiles() %>%
  addRectangles(
    lng1=25, lat1=35,
    lng2=45, lat2=43,
    fillColor = "transparent", color="red", label="YENİ STİLDE TÜRKİYE'NİN YAKLAŞIK KOORDİNATLARI", labelOptions = labelOptions(noHide = T, direction = 'top', style = list(
        "color" = "black",
        "font-family" = "Cursive",
        "font-style" = "Lucida Handwritingl",
        "box-shadow" = "3px 3px rgba(0,0,0,0.25)",
        "font-size" = "14px",
        "border-color" = "rgba(0,0,0,0.5)",
        "padding" = "4px",
        "background-color"= "rgba(255, 255, 255, 2)",
        "font-weight" = "bold"
      )))

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Türkiye haritası kare içerisine alınmış bir şekilde yeni etiket tasarımı ile aşağıda verilmiştir.

Haritanın PNG ve JPEG Formatlarında Kaydedilmesi

Harita üzerinde yaptığımız işlemlerden sonra eğer haritayı kaydetmek istiyorsak önümüze farklı formatta seçenekler çıkmaktadır. Bu formatlar, html, png, pdf ve jpeg formatları olabilmektedir. Farklı formatlarda haritanın kaydedilmesi için bu kısımda mapview paketi kullanılmıştır. Aşağıdaki çalışmada bir önceki çalışmada elde edilmiş harita png formatında kaydedilmiştir. Bu kaydetme işleminde kullanılan fonksiyon mapshot() olup, bu fonksiyon içerisinde diğer formatlar da tanımlanabilmektedir.

library(mapview)
leaflet() %>% 
addTiles() %>%
addRectangles(
    lng1=25, lat1=35,
    lng2=45, lat2=43,
    fillColor = "transparent", color="red", label="YENİ STİLDE TÜRKİYE'NİN YAKLAŞIK KOORDİNATLARI", labelOptions = labelOptions(noHide = T, direction = 'top', style = list(
        "color" = "black",
        "font-family" = "Cursive",
        "font-style" = "Lucida Handwritingl",
        "box-shadow" = "3px 3px rgba(0,0,0,0.25)",
        "font-size" = "14px",
        "border-color" = "rgba(0,0,0,0.5)",
        "padding" = "4px",
        "background-color"= "rgba(255, 255, 255, 2)",
        "font-weight" = "bold"
      ))) %>% 
mapshot(file = "Turkiye.png")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Türkiye haritası kare içerisine alınmış bir şekilde png formatında aşağıda verilmiştir.

Bir diğer çalışmamızda ise çalışmamızın başında oluşturduğumuz haritayı jpeg formatında kaydedelim.

leaflet(deneme) %>%
addTiles(group = "OpenStreetMap") %>%
addPulseMarkers(lng =~long, lat=~lat,  icon = makePulseIcon(), label=paste(deneme$Firma,"firmasının cirosu:", deneme$Ciro), labelOptions = labelOptions(noHide = F, direction = 'top', style = list(
        "color" = "green",
        "font-family" = "calibri",
        "font-style" = "bold",
        "box-shadow" = "3px 3px rgba(0,0,0,0.25)",
        "font-size" = "15px",
        "border-color" = "rgba(0,0,0,0.5)"
      ))) %>% 
mapshot(file = "Turkiyeciro.jpeg")

Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen haritamız jpeg formatında aşağıda verilmiştir.

Sonuç

Verinin harita üzerinde görselleştirilmesine yönelik yaptığım çalışmalardan biri olan 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.

Yararlanılan Kaynaklar

  • https://rstudio.github.io/crosstalk/ 
  • https://emilyriederer.github.io/demo-crosstalk/tutorial/tutorial-rmd.html 
  • https://www.jla-data.net/eng/leaflet-markers-in-r/ 
  • https://rstudio.github.io/leaflet/popups.html 
  • https://rstudio.github.io/crosstalk/using.html 
  • https://emilyriederer.github.io/demo-crosstalk/tutorial/tutorial-rmd.html 
  • https://plotly-r.com/client-side-linking.html 
  • https://nicar.r-journalism.com/docs/crosstalk-flexdashboard-leaflet-datatable/ 
  • https://rstudio-pubs-static.s3.amazonaws.com/367074_7396dc3734544b0f94e04b8801b24664.html 
  • https://rstudio.github.io/crosstalk/using.html 

11.https://rpubs.com/tevfik1461/deprem 

12.https://cran.r-project.org/web/packages/crosstalk/crosstalk.pdf 

13.https://cran.r-project.org/web/packages/leaflet.extras2/leaflet.extras2.pdf 

14.https://mrjoh3.github.io/2018/07/25/filtering-spatial-data/ 

15.https://rdrr.io/cran/leaflet/man/makeAwesomeIcon.html 

16.https://rstudio.github.io/leaflet/popups.html 

17.https://github.com/r-spatial/leafpop

18. Crostalk ve Leaflet Paketleriyle Türkiye Depremlerinin Analizi, https://rpubs.com/tevfik1461/harita

19. https://tevfikbulut.com/2021/06/29/crostalk-ve-leaflet-paketleriyle-turkiye-depremlerinin-analizi-analysis-of-turkey-earthquakes-using-crostalk-and-leaflet-packages/

20. RStudio Cloud: https://login.rstudio.cloud/

21. The R Project for Statistical Computing. https://www.r-project.org/

22. Mapview paketi, https://cran.r-project.org/web/packages/mapview/index.html

Önceki yazı Sonraki Yazı
HTMLjpegleafletmapviewPdfpng

Yorum Yaz Cevabı iptal et

Son Yazılar

  • Kanada Sağlık Sisteminde Bekleme Süreleri
  • Araştırma Metodolojisi Notları-II
  • Araştırma Metodolojisi Notları-I
  • Microsoft Excel’de Bulut Endeks-Beta [BE-β] Simülasyonu
  • R’da Statik ve Dinamik Haritalama Vaka Çalışmaları: Türkiye Örneği

Son Yorumlar

  1. Küresel İnovasyon Endeksi 2021 Yılı Raporu ve Türkiye - winally.com - Küresel İnovasyon Endeksi’nde Türkiye Ne Durumda?
  2. R’da Birliktelik Kuralları | canözkan - Apriori Algoritması Üzerine Bir Vaka Çalışması: A Case Study on Apriori Algorithm
  3. Tevfik BULUT - Python’da Şans Oyunları Perspektifinden Olasılık : Probability from Perspective of the Chance Games in Python
  4. Ahmet Aksoy - Python’da Şans Oyunları Perspektifinden Olasılık : Probability from Perspective of the Chance Games in Python
  5. Tevfik BULUT - Z Tablosuna Göre Güven Aralığının Hesaplanmasına Yönelik Bir Simülasyon Çalışması: A Simulation Study for Calculating Confidence Interval by Z Table

Arşivler

  • Ocak 2023
  • Ekim 2022
  • Eylül 2022
  • Nisan 2022
  • Mart 2022
  • Ekim 2021
  • Eylül 2021
  • Ağustos 2021
  • Temmuz 2021
  • Haziran 2021
  • Mayıs 2021
  • Nisan 2021
  • Şubat 2021
  • Ocak 2021
  • Aralık 2020
  • Kasım 2020
  • Ekim 2020
  • Eylül 2020
  • Ağustos 2020
  • Temmuz 2020
  • Haziran 2020
  • Mayıs 2020
  • Nisan 2020
  • Mart 2020
  • Şubat 2020
  • Ocak 2020
  • Aralık 2019
  • Kasım 2019
  • Ekim 2019
  • Eylül 2019
  • Ağustos 2019
  • Mayıs 2019
  • Şubat 2019
  • Aralık 2018
  • Eylül 2018
  • Ağustos 2018
  • Temmuz 2018
  • Mayıs 2018
  • Nisan 2018
  • Ekim 2017
  • Temmuz 2017
  • Haziran 2017
  • Mayıs 2017
  • Ocak 2017

Kategoriler

  • Genel
  • İstatistik
  • Makine Öğrenme
  • Model Geliştirme
  • Sağlık
  • Teknoloji

Kategoriler

  • Genel
  • İstatistik
  • Makine Öğrenme
  • Model Geliştirme
  • Sağlık
  • Teknoloji

Etiketler

Accuracy Basit Tesadüfi Örnekleme Bernoulli Olasılık Dağılımı Confusion Matrix Coronavirus Doğruluk Doğruluk Oranı Dünya Sağlık Örgütü EDA Epidemi Epidemiyology Epidemiyoloji Exploratory Data Analysis Exploratory Data Analysis (EDA) F1 Forecast Keşifsel Veri Analizi Kitle Olasılık Fonksiyonu Koronavirüs Koronavirüs Salgını Olasılık Olasılıklı Örneklem OSB Pandemi Point Estimation Point Forecast Prevalance Prevalans Probability Sampling R Recall Salgın Sağlık Bakanlığı Simple Random Sampling Tahmin TBATS TURKEY TÜRKİYE Veri Madenciliği WHO World Health Organization Yapay Zeka ÇKKV Örneklem Örneklem Büyüklüğü
Logo

Burada, gazete ve dergilerde yayınlanan çalışmalarımın tamamı çalışmakta olduğum kurumdan bağımsız olarak özel hayatımda yaptığım çalışmalardır. Dolayısıyla, burada yer alan çalışmalardan emeğe saygı adına kaynak gösterilmesi suretiyle azami ölçüde herkes yararlanabilir.

Site Haritası

  • Ana Sayfa
  • Hakkında
  • Blog
  • İletişim

Linkler

  • winally.com

Bana Ulaşın

Bu sayfa, bazı temel bilgilerin ve bir iletişim formunun yer aldığı bir iletişim sayfasıdır. Suç teşkil edecek, yasadışı, tehditkar, rahatsız edici, hakaret ve küfür içeren, aşağılayıcı, küçük düşürücü, kaba, müstehcen, ahlaka aykırı, kişilik haklarına zarar verici ya da benzeri niteliklerde içeriklerden doğan her türlü mali, hukuki, cezai, idari sorumluluk içeriği gönderen Kişilere aittir.

  • Email: buluttevfik@gmail.com

© Copyright 2022 Tevfik Bulut