Veri görselleştirmenin bir boyutu da veri setlerindeki örüntünün haritalar üzerinde sunulmasıdır. Böylece verinin mekansal dağılımını daha iyi görebilir ve daha iyi yorumlayabiliriz. Bu çalışmada keşifsel veri analizi yapılarak mevcut veya sentetik olarak üretilen veri setleri uygulamalı olarak harita üzerinde gösterilmiştir. Uygulamalarda statik ve dinamik Türkiye haritaları oluşturulmuştur. Harita üzerinde çıkarımsal (inferential) istatistiklerinin gösterilmesi yani daha ileri düzey analizler de pek tabi yapılması mümkündür. Ancak çıkarımsal istatistikler bu çalışmanın odağını oluşturmamaktadır. Çalışma kapsamında R Markdown üzerinde R programlama dili kullanılmıştır.
Keşifsel veri analizi kapsamında ilk olarak toplu olarak kullanılan R kütüphaneleri verilmiştir.
Yüklenen R Kütüphaneleri
Bu kısımda ilk olarak R fonksiyonunun çalıştırılması, elde edilen bulguların görselleştirilmesi ve Microsoft Excele xlsx uzantılı olarak yazdırılması için gerekli kütüphaneler verilmiştir.
kütüphane<-c("dplyr","tibble","ggplot2","ggthemes","readr","readxl", "writexl", "stargazer", "webshot","RColorBrewer", "htmlwidgets", "sp", "ggmap","scales", "geojsonio", "sf","echarts4r", "echarts4r.maps", "broom", "viridis", "raster", "TRmaps", "tmap", "kableExtra")
yükle<-sapply(kütüphane, require, character.only = TRUE)
#Kütüphane yüklenme durumunu gösteren tablo
tibble(Sıra=1:length(kütüphane), Kütüphane=names(yükle), Durumu=as.logical(yükle)) %>%
mutate(Durumu=if_else(Durumu==TRUE, "Yüklendi", "Paket Kurulumu Gerekli")) %>%
kbl() %>%
kable_minimal()
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 kodu yazdım. Yukarı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 hepsi yüklenmiştir. Bu durumda aşağıdaki tabloda Yüklendi ifadesi gelecektir. Eğer ilgili kütüphane yüklenmemiş olursa “Paket Kurulumu Gerekli” ifadesi satırda yazacaktır.
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen kütüphane yüklenme durumunu gösteren tablo aşağıda verilmiştir.

Statik Haritalama Uygulamaları
Bu kısımda ilk olarak TRmaps kütüphanesi kullanılmıştır. TRmaps kütüphanesi İstatistiki Bölge Birimleri Sınıflandırması (İBBS), ingilizce ifadeyle The Nomenclature of Territorial Units for Statistics (NUTS) sınıflandırmasını içermesinden dolayı ayrı bir önem arz etmektedir. Çünkü bilimsel araştırmalarda NUTS sınıflandırması yaygın bir şekilde kullanılmaktadır. Sınıflandırmada, iller düzey 3 seviyesi olarak kabul edilmiş, komşu illerin gruplandırması ile de Tablo 1’de yer alan 26 Düzey II ve 12 Düzey I Bölgeleri oluşturulmuştur.
Tablo 1: İstatistiki Bölge Birimleri Sınıflandırması (İBBS), Türkiye

Kaynak: https://ka.gov.tr/sayfalar/kalkinma-planlamasinda-istatistiki-bolge-birimleri-siniflandirmasi–24
Düzey 1 Bölgeleri
İlk örneğimize Düzey 1 bölgeleri veya TR12 bölgeleri üzerinden Türkiye haritası oluşturarak başlayabiliriz. Aşağıda yazılan kod bloğunda tr_nuts1 veri TRmaps kütüphanesinden gelmekte olup, bu kütüphaneyi yüklemek için aşağıdaki kod bloğunu çalıştırınız. İlk olarak devtools‘u kurun, ardından buradan TRmaps kütüphanesini yükleyin. R cran üzerinde bulunmayan kütüphaneleri benzer şekilde yükleyebilirsiniz.
install.packages("devtools")
devtools::install_github("htastan/TRmaps")
library(TRmaps)
Yukarıdaki kod bloğu çalıştırıldıktan sonra TRmaps içerisindeki veri setleri ve harita verileri gelecektir.
ggplot(tr_nuts1) +
geom_sf(mapping = aes(fill = NUTS1_name))+
coord_sf()+
labs(fill = "Düzey 1 Bölgeleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))
Yukarıdaki kod bloğu çalıştırıldığında elde edilen düzey 1 bölgelerimiz adlarıyla birlikte haritanın legend kısmında gösterilmiştir.

Aşağıda yazılan kod bloğunda ise düzey 1 bölgelerimizin kodu legend kısmında gösterilmiştir.
ggplot(tr_nuts1) +
geom_sf(mapping = aes(fill = NUTS1_code))+
coord_sf()+
labs(fill = "Düzey 1 Bölgeleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))
Yukarıdaki kod bloğu çalıştırıldığında elde edilen düzey 1 bölgelerimiz kodlarıyla birlikte haritanın legend kısmında verilmiştir.

Düzey 1 bölgelerinin kodlarını aşağıda yazılan kod bloğu ile legend olmadan harita üzerinde etiketleyerek de gösterebiliriz.
ggplot(tr_nuts1) +
geom_sf(mapping = aes(fill = NUTS1_code))+
coord_sf()+
labs(fill = "Düzey 1 Bölgeleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))+
theme(legend.position="none")+
geom_sf_label(aes(label = NUTS1_code))
Yukarıdaki kod bloğu çalıştırıldığında elde edilen düzey 1 bölgelerimiz kodlarıyla birlikte harita üzerinde verilmiştir.

Düzey 1 bölgelerinin adlarını aşağıda yazılan kod bloğu ile harita üzerinde etiketleyerek de gösterebiliriz.
ggplot(tr_nuts1) +
geom_sf(mapping = aes(fill = NUTS1_code))+
coord_sf()+
labs(fill = "Düzey 1 Bölgeleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = bquote(bold("Veri Kaynağı:")~"TRmaps"))+
theme(legend.position="none")+
geom_sf_label(aes(label =NUTS1_name))
Yukarıdaki kod bloğu çalıştırıldığında elde edilen düzey 1 bölgelerimiz adlarıyla birlikte harita üzerinde verilmiştir.

Şimdi de alternatif olarak tmap kütüphanesi ile TRmaps kütüphanesinden aldığımız veri seti ile aynı haritaları oluşturalım.
tm_shape(tr_nuts1) +
tm_fill("NUTS1_name", palette = "-Blues")+
tm_layout(legend.outside = TRUE, frame = FALSE)+
tm_text("NUTS1_code", size = 0.7, auto.placement = T, legend.size.show = FALSE, col="black", fontface = 2, bg.alpha = .5, ymod=0.2)+
tm_borders(alpha=.3, "grey40", lwd=3)+
tm_legend(show=FALSE)+
tm_credits("Veri Kaynağı: TRmaps", position=c("right", "bottom"))
Yukarıdaki kod bloğu çalıştırıldığında elde edilen düzey 1 bölgelerimiz kodlarıyla birlikte harita üzerinde verilmiştir.

Düzey 2 Bölgeleri
Bu kısımda ise düzey 2 bölgeleri harita üzerinde verilmiştir. İsimler uzun olduğu için bu bölgelerin kodları harita üzerinde gösterilmiştir.
ggplot(tr_nuts2) +
geom_sf(mapping = aes(fill = NUTS2_code))+
coord_sf()+
labs(fill = "Düzey 2 Bölgeleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))+
theme(legend.position="none")+
geom_sf_label(aes(label = NUTS2_code, label.size=0.2))
Yukarıdaki kod bloğu çalıştırıldığında elde edilen düzey 2 bölgelerimiz kodlarıyla birlikte harita üzerinde verilmiştir.

Aynı haritayı tmap kütüphanesi ile de aşağıdaki kod bloğunun çalıştırılmasıyla elde edebiliriz.
tm_shape(tr_nuts2) +
tm_fill("NUTS2_name", palette = "-Greens")+
tm_layout(legend.outside = TRUE, frame = FALSE)+
tm_text("NUTS2_code", size = 0.7, auto.placement = T, legend.size.show = FALSE, col="black", fontface = 2, bg.alpha = .5, ymod=0.2)+
tm_borders(alpha=.3, "grey40", lwd=3)+
tm_legend(show=FALSE)+
tm_credits("Veri Kaynağı: TRmaps", position=c("right", "bottom"))
Yukarıdaki kod bloğu çalıştırıldığında düzey 2 bölgeleri kodlarıyla birlikte harita üzerinde verilmiştir.

Düzey 3 Bölgeleri veya İl Düzeyi
ggplot(tr_nuts3) +
geom_sf(mapping = aes(fill = NUTS3_code))+
coord_sf()+
labs(fill = "Düzey 3 İlleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))+
theme(legend.position="none")+
geom_sf_text(aes(label = name_tr), size=4, color="black")
Yukarıdaki kod bloğu çalıştırıldığında düzey 3 illeri isimleriyle birlikte harita üzerinde verilmiştir. Eğer illeri kodlarıyla verecek olsak kod bloğunda geom_sf_text(aes(label = NUTS3_code), size=4, color=”black”) ifadesini yazmamız yeterli olacaktır.

Tmap kütüphanesi kullanarak düzey 3 illerini verecek olsaydık aşağıdaki kod bloğunu kullanacaktık.
tm_shape(tr_nuts3) +
tm_fill("name_tr", palette = "-Greens")+
tm_layout(legend.outside = TRUE, frame = FALSE)+
tm_text("name_tr", size = 0.7, auto.placement = T, legend.size.show = FALSE, col="black", fontface = 2, bg.alpha = .5, ymod=0.2)+
tm_borders(alpha=.3, "grey40", lwd=3)+
tm_legend(show=FALSE)+
tm_credits("Veri Kaynağı: TRmaps", position=c("right", "bottom"))
Yukarıdaki kod bloğu çalıştırıldığında düzey 3 illeri isimleriyle birlikte harita üzerinde verilmiştir.

İlçe Düzeyi
Bu kısımda ise haritalar bir ilin ilçeleri üzerinden verilmiştir. Aşağıdaki kod bloğunda tr_ilce veri setinde il_ilçe başlığı altında il ve ilçe isimleri “–” işareti ile birleştirildiğinden tidyr kütüphanesi kullanılarak il ve ilçe olarak iki ayrı sütun oluşturulmuştur. Gözünüzde canlanması adına veri setinin ilk versiyonu değişkenlerin adlarıyla birlikte bir kesiti aşağıdaki tabloda verilmiştir.

tidyr kütüphanesinden separate(il_ilce, c(‘il’, ‘ilce’), sep=’-‘) fonksiyonunu kullanarak il ve ilçeler ayrı başlıklar olarak yapılandırılmıştır. Yeni durumda veri setimizin bir kesiti aşağıdaki tabloda verilmiştir.

library(tidyr)
veri=tr_ilce %>% filter(adm1 == "TUR061")%>% separate(il_ilce, c('il', 'ilce'), sep='-')
ggplot(veri) +
geom_sf(mapping = aes(fill = ilce))+
coord_sf()+
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))+
theme(legend.position="none")+
geom_sf_text(aes(label = ilce), size=4, color="black")
Yukarıdaki kod bloğu çalıştırıldığında Trabzon ilinin ilçeleri isimleriyle birlikte harita üzerinde verilmiştir.

Trabzon ilçe haritasını tmap kütüphanesi kullanarak verecek olsaydık aşağıdaki R kod bloğunu yazacaktık.
veri=tr_ilce %>% filter(adm1 == "TUR061")%>% separate(il_ilce, c('il', 'ilce'), sep='-')
tm_shape(veri) +
tm_fill("ilce", palette = "viridis")+
tm_layout(legend.outside = TRUE, frame = FALSE)+
tm_text("ilce", size = 0.7, auto.placement = T, legend.size.show = FALSE, col="black", fontface = 2, bg.alpha = .5, ymod=0.2)+
tm_borders(alpha=.3, "grey40", lwd=3)+
tm_legend(show=FALSE)+
tm_credits("Veri Kaynağı: TRmaps", position=c("left", "bottom"))
Yukarıdaki kod bloğu çalıştırıldığında tmap kütüphanesi ile elde edilen Trabzon ilçe haritası ilçe isimleriyle birlikte harita üzerinde verilmiştir.

Haritaların Bir Arada Sunulması
Bazen çalışmalarda karşılaştırma yapılabilmesi adına birden fazla haritanın aynı anda ve bir sayfa verilmesi istenmektedir. Bu durumda da aşağıda yazılan kod bloğunda ggpubr kütüphanesinden ggarrange() ve tmap kütüphanesinden tmap_arrange() fonksiyonları kullanılmıştır. İlk olarak ggpubr kütühanesini kullanarak iki farklı Türkiye haritasını aynı anda verelim. Aşağıdaki kod bloğunda ggarrange(h1, h2, ncol = 1, nrow = 2) fonksiyonu ile iki farklı haritayı 1 sütun, 2 satır düzeninde verilmesini istiyoruz. Farklı düzenlerde vermek için fonksiyon içerisindeki ncol = 1, nrow = 2 ifadelerini değiştirmeniz yeterlidir.
library(ggpubr)
h1=ggplot(tr_nuts3) +
geom_sf(mapping = aes(fill = NUTS3_code))+
coord_sf()+
labs(fill = "Düzey 3 İlleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))+
theme(legend.position="none")+
geom_sf_text(aes(label = name_tr), size=4, color="black")
h2=ggplot(tr_nuts3) +
geom_sf(mapping = aes(fill = NUTS3_code))+
coord_sf()+
labs(fill = "Düzey 3 İlleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))+
theme(legend.position="none")+
geom_sf_text(aes(label = NUTS3_code), size=4, color="black")
ggarrange(h1,h2, ncol = 1, nrow = 2)
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen 1 sütun, 2 satır düzenindeki harita aşağıda verilmiştir.

tmap kütüphanesini kullanarak aynı düzende iki farklı haritayı aşağıda yazılan kod bloğu ile de elde etmek mümkündür. İl haritalarının bir arada sunulması için tmap kütüphanesinden tmap_arrange(tm1, tm) kütüphanesi kullanılmıştır.
tm1=tm_shape(tr_nuts3) +
tm_fill("name_tr", palette = "viridis") +
tm_layout(legend.outside = TRUE, frame = FALSE, main.title = "Türkiye Etiketsiz İl Haritası",
main.title.position = "centre")+
tm_legend(show=FALSE)
#Alternatif:metin
tm=tm_shape(tr_nuts3) +
tm_fill("name_tr", palette = "Blues") +
tm_layout(legend.outside = TRUE, frame = FALSE, main.title = "Türkiye Etiketli İl Haritası",
main.title.position = "centre", main.title.fontface = "bold.italic", legend.title.fontfamily = "monospace")+
tm_text("name_tr", size = 0.5, auto.placement = F, legend.size.show = FALSE)+
tm_borders(alpha=.4)+
tm_legend(show=FALSE)+
tm_credits("Data source: TRmaps ", fontface = "italic", align = "right") +
tm_credits("Writer: By Tevfik Bulut using libraries TRmaps and tmap", fontface = "bold", align = "right")
tmap_arrange(tm1, tm)#haritaların bir arada sunulması

Bu kısımda harita oluşturmada ağırlıklı olarak ggplot ve tmap kütüphaneleri kullanılmıştır. Aynı haritaları sf, rnaturalearth ve rnaturalearthdata kütüphaneleri kullanarak oluşturabilir. Yine bu kütüphanelerle elde edilen veriyi ggplot entegrasyonu ile harita oluşturmada kullanabilir. Bahsedilen bu kütüphanelerle ilk örneğimizi il haritası üzerinden yapalım. Türkiye harita verisi rnaturalearth kütüphanesi ile elde edilmiştir.
library(sf)
library(rnaturalearth)
library(rnaturalearthdata)
tr <- ne_states(country = "Turkey", returnclass = "sf")# Türkiye harita verisi
plot(tr$geometry, col = sf.colors(81, categorical = TRUE), border = 'grey',
axes = TRUE, main = "Türkiye Haritası")
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Türkiye il haritası aşağıda verilmiştir.

Bir diğer örneğimizde rnaturalearth kütüphanesi ile elde edilen verinin ggplot kütüphanesiyle entegre edilerek oluşturulan il haritasına yer verilmiştir.
ggplot(tr) +
geom_sf(fill = rainbow(81))+
geom_text(
data = tr,
aes(x = longitude,
y = latitude,
label = name),
size = 3,
hjust = 1
)+
theme_void()
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen Türkiye il haritası aşağıdaki harita üzerinde verilmiştir.

Haritaların Kaydedilmesi
Buraya kadar farklı düzeylerde haritaların oluşturulması ve bir arada sunulmasını odaklandık. Şimdi de sıra oluşturduğumuz bu haritaların yüksek çözünürlüklü olarak nasıl kaydedileceğine gelmiştir. Bu kısmında haritalar png formatında kaydedilmiş olup, ggplot kütüphanesinden ggsave() ve tmap kütüphanesinden ise tmap_save() fonksiyonu kullanılmıştır. Aşağıda yazılan kod bloğu ile ilk olarak il haritası ggsave() fonksiyonu olarak kaydedilmiştir. ggsave(“duzey3.png”, h1, height = 5, width = 7, dpi = 320) fonksiyonunda il haritamız yüksekliği 5, genişliği 7, çözünürlüğü ise 320 dpi olacak şekilde yapılandırılmıştır.
h1=ggplot(tr_nuts3) +
geom_sf(mapping = aes(fill = NUTS3_code))+
coord_sf()+
labs(fill = "Düzey 3 İlleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))+
theme(legend.position="none")+
geom_sf_text(aes(label = name_tr), size=2, color="black")
ggsave("duzey3.png", h1, height = 5, width = 7, dpi = 320)
Yukarıdaki kod bloğu çalıştırıldığında ggsave() fonksiyonuyla kaydedilen il haritamız aşağıda verilmiştir.

tmap kütüphanesi aynı haritayı kaydetmek için aşağıdaki kod bloğunu yazmamız yeterlidir.
tm=tm_shape(tr_nuts3) +
tm_fill("name_tr", palette = "Blues") +
tm_layout(legend.outside = TRUE, frame = FALSE, main.title = "Türkiye Etiketli İl Haritası",
main.title.position = "centre", main.title.fontface = "bold.italic", legend.title.fontfamily = "monospace")+
tm_text("name_tr", size = 0.5, auto.placement = F, legend.size.show = FALSE)+
tm_borders(alpha=.4)+
tm_legend(show=FALSE)+
tm_credits("Data source: TRmaps ", fontface = "italic", align = "right") +
tm_credits("Writer: By Tevfik Bulut using libraries TRmaps and tmap", fontface = "bold", align = "right")
tmap_arrange(tm1, tm)
tmap_save(tm, filename = "duzey3_t_map.png")
Yukarıdaki kod bloğu çalıştırıldığında tmap_save() fonksiyonuyla kaydedilen il haritamız aşağıda verilmiştir. tmap_save(tm = NULL, filename = NULL, width = NA, height = NA, units = NA, dpi = 300, outer.margins = NA, asp = NULL, scale = NA, insets_tm = NULL, insets_vp = NULL, add.titles = TRUE, verbose = NULL,
…) fonksiyonunda görüleceği üzere default olarak 300 dpi olarak alınmaktadır. Aşağıdaki haritada da dpi yazılmadığı için 300 dpi’lık bir harita ürettik. İhtiyaca göre dpi’yı artırabilir veya azaltabilirsiniz.

Şimdi de iki farklı il haritasını aynı sayfada tmap kütüphanesi kullanarak aşağıda yazılan kod bloğu ile kaydedelim.
#İlk il haritası
tm1=tm_shape(tr_nuts3) +
tm_fill("name_tr", palette = "viridis") +
tm_layout(legend.outside = TRUE, frame = FALSE, main.title = "Türkiye Etiketsiz İl Haritası",
main.title.position = "centre")+
tm_legend(show=FALSE)
#2. il haritası
tm=tm_shape(tr_nuts3) +
tm_fill("name_tr", palette = "Blues") +
tm_layout(legend.outside = TRUE, frame = FALSE, main.title = "Türkiye Etiketli İl Haritası",
main.title.position = "centre", main.title.fontface = "bold.italic", legend.title.fontfamily = "monospace")+
tm_text("name_tr", size = 0.5, auto.placement = F, legend.size.show = FALSE)+
tm_borders(alpha=.4)+
tm_legend(show=FALSE)+
tm_credits("Data source: TRmaps ", fontface = "italic", align = "right") +
tm_credits("Writer: By Tevfik Bulut using libraries TRmaps and tmap", fontface = "bold", align = "left")
tmap_arrange(tm1, tm)
kl=tmap_arrange(tm1, tm)#birleştirme
tmap_save(kl, filename = "ikiz_map.png", dpi=320)#kaydetme
İki farklı il haritası, aynı sayfada tmap kütüphanesi kullanarak ve 320 dpi‘lık yapılandırılarak tek bir sayfada aşağıda png formatında sunulmuştur.

Aynı kaydetme işlemini aşağıda yazılan kod bloğunda ggplot ve ggpubr kütüphanelerini kullanarak da yapabiliriz.
h1=ggplot(tr_nuts3) +
geom_sf(mapping = aes(fill = NUTS3_code))+
coord_sf()+
labs(fill = "Düzey 3 İlleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))+
theme(legend.position="none")+
geom_sf_text(aes(label = name_tr), size=2, color="black")
ggsave("duzey3.png", h1, height = 5, width = 7, dpi = 320)
h2=ggplot(tr_nuts3) +
geom_sf(mapping = aes(fill = NUTS3_code))+
coord_sf()+
labs(fill = "Düzey 3 İlleri") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TRmaps")+
theme(legend.title = element_text(face = "bold"))+
theme(legend.position="none")+
geom_sf_text(aes(label = NUTS3_code), size=2, color="black")
ikizgg=ggarrange(h1,h2, ncol = 1, nrow = 2)
ggsave("duzey3gg.png", ikizgg, height = 5, width = 7, dpi = 320)
İki farklı il haritası, aynı sayfada ggplot ve ggpubr kütüphaneleri kullanarak ve 320 dpi’lık yapılandırılarak tek bir sayfada aşağıda png formatında sunulmuştur.

Veri Seti Üzerinde Uygulama
Bu kısımda ilk olarak il haritası üzerinde TÜİK veri tabanından alınan 2021 yılı nüfus verisi gösterilecektir. Çalışmada kullanılan veri setini xlsx uzantılı olarak aşağıdaki linkten indirebilirsiniz. İlk örneğimizde TRmaps kütüphanesindeki veri seti ile aşağıdaki linkte yer alan 2021v1 nüfus veri seti birleştirilecektir. 2021v1 nüfus veri setinde id il adlarını, deg ise nüfus miktarını göstermektedir.
options(scipen = 999)
tr_nuts3 #TRmaps paketinden gelen veri seti
tr_il=read_excel("2021v1.xlsx")#
df=left_join(tr_nuts3, tr_il, by = c("name_tr" = "id")) #İle göre TRmaps paketinden gelen veri seti ile 2021 yılı nüfus veri seti birleştirilmiştir.
ggplot(df) +
geom_sf(mapping = aes(fill = deg))+
coord_sf()+
labs(fill = "Nüfus Düzeyi") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TÜİK")+
theme(legend.title = element_text(face = "bold"))+
scale_fill_distiller(palette = "Spectral")
Yukarıdaki kod bloğu çalıştırıldığında illere göre nüfus miktarı aşağıdaki ısı haritası üzerinde verilmiştir.

İl düzeyinde verilmiş haritayı tmap kütüphanesini kullanarak aşağıdaki kod bloğu ile de elde edebilir ve kaydedebilirsiniz.
options(scipen = 999)
tr_nuts3 #TRmaps paketinden gelen veri seti
tr_il=read_excel("2021v1.xlsx")#
df=left_join(tr_nuts3, tr_il, by = c("name_tr" = "id"))
tm= tm_shape(df) +
tm_polygons(col = "deg",
title = "Nüfus Düzeyi",
n = 10,
style = "equal",
palette = "Blues")+
tm_layout(legend.position =c("right", "center"), legend.title.size = 1,
legend.text.size = 0.8, frame=FALSE, legend.outside = T,
legend.title.fontface = 2)+
tm_text(text = "name_tr",
size = 0.7)
tmap_save(tm, "iltmap.png")
Yukarıdaki kod bloğu çalıştırıldığında tmap kütüphanesi ile illere göre nüfus miktarı aşağıdaki ısı haritası üzerinde verilmiştir.

İlçe düzeyinde de nüfus verisini haritada gösterebiliriz. Örneğimizi TÜİK nüfus verilerinden hareketle Trabzon ilindeki ilçeler üzerinde aşağıda yazılan kod bloğu ile gösterelim. Trabzon ilçelerinin nüfusunu gösterir veri setini xlsx uzantılı aşağıdaki linkten indirebilirsiniz. Aşağıdaki linkte yer alan ilce_nufus_trabzon veri setinde deg değişkeni, ilçe nüfusunu göstermektedir.
options(scipen = 999)
tr_ilce= tr_ilce %>% filter(adm1 == "TUR061") %>% separate(il_ilce, c('il', 'ilce'), sep='-') #TRmaps paketinden gelen veri seti
tr_trabzon=read_excel("ilce_nufus_trabzon.xlsx")#
df=left_join(tr_ilce, tr_trabzon, by = c("ilce" = "ilce")) #İle göre TRmaps paketinden gelen veri seti ile 2021 yılı ilçe nüfus veri seti birleştirilmiştir.
ggplot(df) +
geom_sf(mapping = aes(fill = deg))+
coord_sf()+
labs(fill = "İlçe Nüfus Düzeyi") +
theme_void()+
theme(plot.title = element_text(hjust = 0.5))+
labs(caption = "Veri Kaynağı: TÜİK")+
theme(legend.title = element_text(face = "bold"))+
scale_fill_distiller(palette = "Spectral")+
geom_sf_text(aes(label = ilce), size=4, color="black")
Yukarıdaki kod bloğu çalıştırıldığında Trabzon ilinin ilçelerine göre nüfus miktarı aşağıdaki ısı haritası üzerinde verilmiştir. Bir Trabzonlu olarak ben de Ortahisar’ın en büyük ilçe olduğunu bilmiyordum ta ki aşağıdaki haritayı oluşturana kadar :)). Akçaabat ilçesidir diye tahmin ediyordum.

Benzer şekilde ilçe düzeyinde verilmiş haritayı tmap kütüphanesini kullanarak aşağıdaki kod bloğu ile de elde edebilir ve kaydedebilirsiniz.
options(scipen = 999)
tr_ilce= tr_ilce %>% filter(adm1 == "TUR061")#%>% separate(il_ilce, c('il', 'ilce'), sep='-') #TRmaps paketinden gelen veri seti
tr_trabzon=read_excel("ilce_nufus_trabzon.xlsx")#
df=left_join(tr_ilce, tr_trabzon, by = c("ilce" = "ilce")) #İle göre TRmaps paketinden gelen veri seti ile 2021 yılı ilçe nüfus veri seti birleştirilmiştir.
tm= tm_shape(df) +
tm_polygons(col = "deg",
title = "İlçe Nüfus Düzeyi",
n = 5,
style = "equal",
palette = "Blues")+
tm_layout(legend.position =c("right", "center"), legend.title.size = 1,
legend.text.size = 0.8, frame=FALSE, legend.outside = T,
legend.title.fontface = 2)+
tm_text(text = "ilce",
size = 0.7)
tmap_save(tm, "ilcetmap.png")
Yukarıdaki kod bloğu çalıştırıldığında Trabzon ilinin ilçelerine göre nüfus miktarı tmap kütüphanesi kullanılarak aşağıdaki ısı haritası üzerinde verilmiştir.

Dinamik Haritalar Oluşturma
Bu kısımda farklı R kütüphaneleri kullanılarak il ve ilçe düzeyinde haritalar dinamik olarak oluşturulacaktır. Ancak burada siz ancak aşağıda verilen kod bloklarını R Markdown üzerinde çalıştırırsanız haritaların dinamik olduğunu göreceksiniz. Bu nedenle bu kısımda oluşturulan haritaların ekran görüntüsü sizlere verilecektir. İlk olarak il düzeyinde sentetik veri üretilmiş, ardından echarts4r ve echarts4r.maps kütüphaneleri kullanılarak il düzeyinde harita oluşturulmuştur. Burada sentetik verisi üretilen iller il vektörü (c(“Ankara”, “Istanbul”, “Izmir”, “Trabzon”))’ndeki illerdir. Ancak bu kütüphanelerle ilgili vurgulanması gereken konu il adlarının ingilizce karakterlerle girilmesi gerektiğidir.
df <- data.frame(
il = c("Ankara", "Istanbul", "Izmir", "Trabzon"),
deger = c(50, 70, 55, 20)) #sentetik veri üretme
tr <- jsonlite::read_json("https://code.highcharts.com/mapdata/countries/tr/tr-all.geo.json")#harita verisi
df %>%
e_charts(il) %>%
e_map_register("TR", tr) %>%
e_map(deger, map = "TR") %>%
e_visual_map(deger)%>%
e_legend(show = T, type = "scroll")%>%
e_theme("infographic")%>%
e_tooltip() %>%
e_title("Türkiye Haritası", "Sentetik veri seti üzeridne bir deneme")
Yukarı R kod bloğu çalıştırıldığında echarts4r ve echarts4r.maps kütüphaneleri ile elde edilen il haritası aşağıda verilmiştir. Sol taraftaki legend’daki barem dinamik olup, aşağı yukarı kaydırıldığında harita üzerindeki renk ölçekleri alınan değerlere göre değişmektedir.

Yine echarts4r ve echarts4r.maps kütüphanelerini kullanarak bu sefer dünya haritası üzerine butonlar ekleyerek Türkiye’yi ve Rusya’yı seçelim. Burada sentetik üretilen değerler ülkelere atanmıştır.
harita <- data.frame( ulke = c(
"France",
"Brazil",
"China",
"Russia",
"Canada",
"India",
"United States",
"Turkey"),
deger = round(runif(8, 1000, 1500)))
harita %>%
e_charts(ulke) %>%
e_map(deger) %>%
e_visual_map(min = 1000, max = 1500) %>%
e_map_toggle_select(name = "Turkey", btn = "btn") %>%
e_button("btn", "Türkiye'yi Seçiniz")%>%
e_map_toggle_select(name = "Russia", btn = "btn1") %>%
e_button("btn1", "Rusya'yı Seçiniz")%>%
e_title("Dünya Haritası Üzerinde Bir Deneme")
Yukarıdaki kod bloğu çalıştırıldığında elde edilen Dünya haritası aşağıda verilmiştir. Harita üzerinde sol üst taraftaki butonlara tıkladığınızda harita üzerinde ülkenin renki sarıya dönecek ve ismi harita üzerinde görünecektir. Bu özellikleri haritalarla kullanmanız çok işinize yarayabilir. Kodu çalıştırdıktan sonra haritada Türkiye’yi seçtiğim için sarıya boyanmış ve ismi harita üzerinde görünmüştür.

Benzer dinamik haritalar highcharter kütüphanesi kullanılarak da oluşturulabilir. Aşağıda highcharter kütüphanesi kullanılarak yazılan kod bloğu tek başına bize Türkiye il haritasını vermektedir.
library(highcharter)
hcmap(map = "countries/tr/tr-all", showInLegend= FALSE) %>%
hc_title(text = "Turkey")

Bir diğer il düzeyinde dinamik haritamız ise highcharter kütüphanesi kullanılarak aşağıda yazılan kod bloğu ile üretilmiştir. Veri seti haritada sentetik olarak üretilmiştir.
library(highcharter)
mapdata <- get_data_from_map(download_map_data("countries/tr/tr-all"))
sentetik <- mapdata %>%
dplyr::select(code = `hc-a2`) %>%
mutate(value = sample(100:115,82,TRUE))
hcmap("countries/tr/tr-all", data = sentetik, value = "value",
joinBy = c("hc-a2", "code"), name= "Sentetik Veri",
dataLabels = list(enabled = TRUE, format = '{point.name}'),
tooltip = list(valueDecimals = 1, valueSuffix = " TL")) %>%
hc_title(text = "Türkiye Haritası") %>%
hc_colorAxis(dataClasses = color_classes(c(seq(100, 115, by = 5)))) %>%
hc_legend(layout = "vertical", align = "right", valueDecimals = 1) %>%
hc_caption(
text = "<b>Grafik sentetik veri seti üzerinden üretilmiştir.</b><br><em>İsteğe bağlı olarak revize edebilirsiniz</em>'") %>%
hc_tooltip(
borderWidth = 5)
Yukarı R kod bloğu çalıştırıldığında highcharter kütüphanesi ile elde edilen il haritası aşağıda verilmiştir. Haritada sağ alt köşedeki legend kısmındaki ölçeklerin herhangi birine tıklandığında ilgili ölçeğin renginin bulunduğu iller harita üzerinden çıkarılacaktır.

Bir diğer il düzeyinde dinamik haritamız aslında çoğumuzun aşina olduğu leaflet kütüphanesi kullanılarak üretilecektir. İl düzeyinde dinamik harita oluşturmada leaflet ve leaflet.extras kütüphaneleri kullanılmıştır. Harita oluşturmada kullanılan veri seti aşağıdaki linkten alınmıştır. https://gist.githubusercontent.com/ozdemirburak/4821a26db048cc0972c1beee48a408de/raw/4754e5f9d09dade2e6c461d7e960e13ef38eaa88/cities_of_turkey.json.
Veri setindeki ilk 10 aşağıda yazılan kod bloğu ile verilmiştir.
json_data=jsonlite::read_json("https://gist.githubusercontent.com/ozdemirburak/4821a26db048cc0972c1beee48a408de/raw/4754e5f9d09dade2e6c461d7e960e13ef38eaa88/cities_of_turkey.json", simplifyVector = TRUE)#data frame olarak yazdırmak için
veri=json_data %>% dplyr::mutate(latitude=as.numeric(latitude), longitude=as.numeric(longitude))
veri %>% head(10) %>% kbl() %>% kable_minimal()

Aşağıda yazılan kod bloğu ile koordinat verilerini de içeren il verisi harita üzerinde verilmiştir.
json_data=jsonlite::read_json("https://gist.githubusercontent.com/ozdemirburak/4821a26db048cc0972c1beee48a408de/raw/4754e5f9d09dade2e6c461d7e960e13ef38eaa88/cities_of_turkey.json", simplifyVector = TRUE)#data frame olarak görmek için
veri=json_data %>% dplyr::mutate(latitude=as.numeric(latitude), longitude=as.numeric(longitude))
renk=colorNumeric(c("White", "Red"), domain = veri$population)
library(leaflet)
library(leaflet.extras)
leaflet(veri) %>%
addTiles() %>%
addCircles(lng = ~longitude, lat = ~latitude, radius = ~sqrt(population) * 10, popup = ~population)%>%
addLegend("bottomright", pal=renk, values = ~population,
title = "Nüfus Düzeyi",
opacity = 1)
Yukarıdaki kod bloğunun çalıştırılmasından sonra leaflet ve leaflet.extras kütüphaneleri ile elde edilen Türkiye il haritası aşağıda verilmiştir. Haritada halkaların büyüklüğü nüfus büyüklüğü ile orantılı olarak artırılmıştır.

Bir diğer örneğimizde aşağıda yazılan kod bloğu ile haritadaki illerin nüfus düzeyi ile illerin renk ölçeğini uyumlu hale getirelim. Bu çalışmada önceki örnekten farklı olarak TRmaps kütüphanesinden gelen tr_nuts3 veri seti ile xlsx uzantılı olarak dışarıdan okunan 2021v1 nüfus veri seti birleştirilmiştir. Ayrıca addTiles() fonksiyonu kullanılmadığı için sadece Türkiye haritası oluşturulmuştur.
options(scipen = 999)
tr_nuts3 #TRmaps paketinden gelen veri seti
tr_il=read_excel("2021v1.xlsx")# xlsx uzantılı 2021 yılı Türkiye nüfus veri seti
df=left_join(tr_nuts3, tr_il, by = c("name_tr" = "id")) #İle göre TRmaps paketinden gelen veri seti ile 2021 yılı nüfus veri seti birleştirilmiştir.
renk=colorNumeric(c("White", "Red"), domain = df$deg)
leaflet(df) %>%
addPolygons(fillColor = ~renk(df$deg), weight = 1, stroke = TRUE,
color = "white", fillOpacity = 1, label = ~df$name_tr,
popup = F, dashArray = "3",
highlightOptions = highlightOptions(
weight = 5,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
labelOptions = labelOptions(
style = list("font-weight" = "normal", padding = "3px 8px"),
textsize = "15px",
direction = "auto")) %>%
addLegend("bottomright", pal=renk, values = ~df$deg,
title = "Nüfus Düzeyi", opacity = 1)
Yukarıdaki kod bloğunun çalıştırılmasından sonra leaflet ve leaflet.extras kütüphaneleri ile elde edilen Türkiye il haritası nüfus büyüklükleri baz alınarak aşağıda verilmiştir. Haritada beyaz renkten kırmızıya doğru gidildikçe nüfus büyüklüğünün arttığını gözlemleyebilirsiniz.

Bir diğer örneğimizde leafpop kütüphanesi kullanılarak harita üzerine açılan tablo (popup table) özelliği entegre edilmiştir. Bu örnek daha önce yapmış olduğum https://rpubs.com/tevfik1461/harita URL adresindeki çalışmadan alınmıştır. Harita üzerindeki veriler aşağıdaki kod bloğunda da görüleceği üzere sentetik olarak üretilmiştir. Kod bloğunda illere göre enlem ve boylam verisini tidygeocoder kütüphanesinden geocode() fonksiyonu getirmektedir.
library(leafpop)
library(leaflet)
library(leaflet.extras2)
library(leaflet.extras)
deneme <- data.frame(
Firma = c("Ulusoy", "Metro", "Süzer", "Kanberoğlu", "Pamukkale","Kamil Koç", "Anadolu", "Dadaş"),
Adres = c("Ankara","İstanbul","Artvin","Rize", "Kayseri", "Antalya", "İzmir", "Sivas"),
Ciro =c(1000, 12500,3000,4000, 6000,8000,9000,1800))%>%
tidygeocoder::geocode(address = Adres,
method = "osm") %>%
sf::st_as_sf(coords = c("long", "lat"), crs = 4326)
leaflet() %>%
addTiles() %>%
addCircleMarkers(data = deneme,
popup = popupTable(deneme))
Yukarıdaki kod bloğunun çalıştırılmasından sonra leaflet, leaflet.extras, leaflet.extras2 ve leafpop kütüphaneleri ile elde edilen Türkiye il haritası aşağıda verilmiştir.

Yukarıdaki haritanın bir benzerini yani harita üzerinde açılan tablo uygulamasını mapview kütüphanesi kullanarak da oluşturabiliriz. Aşağıda yazılan kod bloğu ile Türkiye haritası üzerindeki ilgili iller üzerine tıklandığında açılan tablo görülecektir. Haritanın sağına da Ciro verisi baz alınarak ölçek konulmuştur. Bu çalışmada bir önceki çalışmaya göre daha az kod yazarak aynı sonuçları alıyorsunuz.
deneme <- data.frame(
Firma = c("Ulusoy", "Metro", "Süzer", "Kanberoğlu", "Pamukkale","Kamil Koç", "Anadolu", "Dadaş"),
Adres = c("Ankara","İstanbul","Artvin","Rize", "Kayseri", "Antalya", "İzmir", "Sivas"),
Ciro =c(1000, 12500,3000,4000, 6000,8000,9000,1800))%>%
tidygeocoder::geocode(address = Adres,
method = "osm") %>%
sf::st_as_sf(coords = c("long", "lat"), crs = 4326)
mapview(deneme, zcol = "Ciro")
Yukarıdaki kod bloğunun çalıştırılmasından sonra mapview kütüphanesi ile elde edilen Türkiye il haritası aşağıda verilmiştir.

Şimdi de mapview kütüphanesi kullanarak dinamik perde haritası oluşturalım. Bir önceki haritada kullandığımız sentetik veri sabit kalacak şekilde 2. sentetik veri seti üretilerek perde haritası ile karşılaştırma yapılmıştır. Aşağıda yazılan kod bloğu ile sentetik olarak üretilen 2010 ve 2020 verileri harita üzerinde karşılaştırılmıştır.
library(mapview)
#2010 yılı veri seti
deneme1 <- data.frame(
Firma = c("Ulusoy", "Metro", "Süzer", "Kanberoğlu", "Pamukkale","Kamil Koç", "Anadolu", "Dadaş"),
Adres = c("Ankara","İstanbul","Artvin","Rize", "Kayseri", "Antalya", "İzmir", "Sivas"),
Ciro =c(1000, 12500,3000,4000, 6000,8000,9000,1800))%>%
tidygeocoder::geocode(address = Adres,
method = "osm") %>%
sf::st_as_sf(coords = c("long", "lat"), crs = 4326)
#2020 yılı veri seti
deneme2<-data.frame(
Firma = c("Ulusoy", "Metro", "Süzer", "Kanberoğlu", "Pamukkale","Kamil Koç", "Anadolu", "Dadaş"),
Adres = c("Ankara","İstanbul","Artvin","Rize", "Kayseri", "Antalya", "İzmir", "Sivas"),
Ciro =c(1000*2, 12500*2,3000*3,4000*2, 6000*3,8000*2,9000*3,1800*4))%>%
tidygeocoder::geocode(address = Adres,
method = "osm") %>%
sf::st_as_sf(coords = c("long", "lat"), crs = 4326)
#mapview(deneme, zcol = "Ciro")
h1 <- mapview(deneme1, zcol = "Ciro",
col.regions = RColorBrewer::brewer.pal(9, "Greens"), alpha.regions = 1,
layer.name = "2010 Yılı"
)
h2 <- mapview(deneme2, zcol = "Ciro",
col.regions = rainbow(8), alpha.regions = 1,
layer.name = "2020 Yılı")
#perde harita
h1 | h2
Yukarıdaki kod bloğunun çalıştırılmasından sonra elde edilen perde harita aşağıda verilmiştir. Haritada perdemiz Türkiye haritasını dikey olarak kesmektedir. Haritada perdeyi sağa doğru çekerseniz 2010 yılı verisine, sola doğru çekerseniz 2020 yılı verisine ulaşırsınız. Evdeki perde gibi düşünün :).

Dinamik harita oluşturmada kullandığımız bir diğer kütüphane plotly kütüphanesidir. Aşağıda yazılan kod bloğu ile Türkiye haritası örneği oluşturulmuş, illere göre nüfus düzeyi verilmiştir.
library(plotly)
json_data=jsonlite::read_json("https://gist.githubusercontent.com/ozdemirburak/4821a26db048cc0972c1beee48a408de/raw/4754e5f9d09dade2e6c461d7e960e13ef38eaa88/cities_of_turkey.json", simplifyVector = TRUE)#data frame olarak yazdırmak için
veri=json_data %>% dplyr::mutate(latitude=as.numeric(latitude), longitude=as.numeric(longitude))
sekil <- veri%>%
plot_ly(
type="densitymapbox",
lat = ~latitude,
lon = ~longitude,
color = ~veri$population,
colorscale="Viridis",
z=veri$population)
sekil <- sekil %>%
layout(
mapbox = list(
style= 'open-street-map', zoom=4.5, center = list(lon = 36, lat =42)))
sekil<- sekil %>% layout(title = '<b> Türkiye İl Nüfus Düzeyleri</b>')
sekil %>% colorbar(title = '<b> Nüfus Ölçeği</b>')
Yukarıdaki kod bloğunun çalıştırılmasından sonra plotly kütüphanesi ile elde edilen harita aşağıda verilmiştir.

Sonuç
Özetle, bu çalışmayla statik ve dinamik nitelikteki haritaların oluşturulmasına yer verilerek bu çalışmadan yararlanacak akademi ve saha çalışanlarına bir katkı sunulması amaçlanmıştır.
Faydalı olması dileğiyle.
Bilimle ve teknolojiyle kalınız.
Bu çalışmaya atıf yapmak için aşağıdaki çalışmayı örnek alabilirsiniz.
- Bulut, T. (2022). R’da Statik ve Dinamik Haritalama Vaka Çalışmaları: Türkiye Örneği. URL: https://tevfikbulut.net/rda-statik-ve-dinamik-haritalama-vaka-calismalari-turkiye-ornegi/.
Not/Note
- Kaynak gösterilmeden alıntı yapılamaz veya kopyalanamaz.
- It can not be cited or copied without referencing.
Yararlanılan Kaynaklar
- Alboukadel Kassambara (2020). ggpubr: ‘ggplot2’ Based Publication Ready Plots. R package version 0.4.0. https://CRAN.R-project.org/package=ggpubr
- D. Kahle and H. Wickham. ggmap: Spatial Visualization with ggplot2. The R Journal, 5(1), 144-161. URL: http://journal.r-project.org/archive/2013-1/kahle-wickham.pdf
- David Robinson, Alex Hayes and Simon Couch (2022). broom: Convert Statistical Objects into Tidy Tibbles. R package version 0.8.0. https://CRAN.R-project.org/package=broom
- Dietrich J, Leoncio W (2022). citation: Software Citation Tools. R package version 0.6.2.
- Erich Neuwirth (2022). RColorBrewer: ColorBrewer Palettes. R package version 1.1-3. https://CRAN.R-project.org/package=RColorBrewer
- Gergely Daróczi and Roman Tsegelskyi (2022). pander: An R ‘Pandoc’ Writer. R package version 0.6.5. https://CRAN.R-project.org/package=pander
- Giraud, T. and Lambert, N. (2016). cartography: Create and Integrate Maps in your R Workflow. JOSS, 1(4). doi: 10.21105/joss.00054.
- H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016.
- Hadley Wickham and Dana Seidel (2022). scales: Scale Functions for Visualization. R package version 1.2.0. https://CRAN.R-project.org/package=scales
- Hadley Wickham and Jennifer Bryan (2022). readxl: Read Excel Files. R package version 1.4.0. https://CRAN.R-project.org/package=readxl
- Hadley Wickham and Maximilian Girlich (2022). tidyr: Tidy Messy Data. R package version 1.2.0. https://CRAN.R-project.org/package=tidyr
- Hadley Wickham, Jim Hester and Jennifer Bryan (2022). readr: Read Rectangular Text Data. R package version 2.1.2. https://CRAN.R-project.org/package=readr
- Hadley Wickham, Romain François, Lionel Henry and Kirill Müller (2022). dplyr: A Grammar of Data Manipulation. R package version 1.0.9. https://CRAN.R-project.org/package=dplyr
- Hao Zhu (2021). kableExtra: Construct Complex Table with ‘kable’ and Pipe Syntax. R package version 1.3.4. https://CRAN.R-project.org/package=kableExtra
- Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables. R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
- Huseyin Tastan (2022). TRmaps: Map data for Turkey. R package version 0.0.0.9000. https://github.com/htastan/TRmaps
- Jeffrey B. Arnold (2021). ggthemes: Extra Themes, Scales and Geoms for ‘ggplot2’. R package version 4.2.4. https://CRAN.R-project.org/package=ggthemes
- Jeroen Ooms (2021). writexl: Export Data Frames to Excel ‘xlsx’ Format. R package version 1.4.0. https://CRAN.R-project.org/package=writexl
- John Coene (2019). echarts4r.maps: Maps for ‘echarts4r’. R package version 0.0.2. http://echarts4r-maps.john-coene.com/
- John Coene (2022). echarts4r: Create Interactive Graphs with ‘Echarts JavaScript’ Version 5. R package version 0.4.4. https://CRAN.R-project.org/package=echarts4r
- Kirill Müller and Hadley Wickham (2022). tibble: Simple Data Frames. R package version 3.1.7. https://CRAN.R-project.org/package=tibble
- Makowski, D., Ben-Shachar, M.S., Patil, I. & Lüdecke, D. (2020). Automated Results Reporting as a Practical Tool to Improve Reproducibility and Methodological Best Practices Adoption. CRAN. Available from https://github.com/easystats/report.
- Pebesma, E., 2018. Simple Features for R: Standardized Support for Spatial Vector Data. The R Journal 10 (1), 439-446, https://doi.org/10.32614/RJ-2018-009
- Pebesma, E.J., R.S. Bivand, 2005. Classes and methods for spatial data in R. R News 5 (2), https://cran.r-project.org/doc/Rnews/.
- R Core Team (2021). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. URL https://www.R-project.org/.
- Ramnath Vaidyanathan, Yihui Xie, JJ Allaire, Joe Cheng, Carson Sievert and Kenton Russell (2021). htmlwidgets: HTML Widgets for R. R package version 1.5.4. https://CRAN.R-project.org/package=htmlwidgets
- Robert J. Hijmans (2022). raster: Geographic Data Analysis and Modeling. R package version 3.5-15. https://CRAN.R-project.org/package=raster
- Scott Chamberlain, Andy Teucher and Michael Mahoney (2022). geojsonio: Convert Data from and to ‘GeoJSON’ or ‘TopoJSON’. R package version 0.9.5. https://CRAN.R-project.org/package=geojsonio
- Simon Garnier, Noam Ross, Robert Rudis, Antônio P. Camargo, Marco Sciaini, and Cédric Scherer (2021). Rvision – Colorblind-Friendly Color Maps for R. R package version 0.4.0.
- Simon Garnier, Noam Ross, Robert Rudis, Antônio P. Camargo, Marco Sciaini, and Cédric Scherer (2021). Rvision – Colorblind-Friendly Color Maps for R. R package version 0.6.2.
- Tennekes M (2018). “tmap: Thematic Maps in R.” Journal of Statistical Software, 84(6), 1-39. doi: 10.18637/jss.v084.i06 (URL:https://doi.org/10.18637/jss.v084.i06).
- Winston Chang (2022). webshot: Take Screenshots of Web Pages. R package version 0.5.3. https://CRAN.R-project.org/package=webshot
- https://gist.githubusercontent.com/ozdemirburak/4821a26db048cc0972c1beee48a408de/raw/4754e5f9d09dade2e6c461d7e960e13ef38eaa88/cities_of_turkey.json
- https://urazakgul.github.io/rblog/posts/2022-09-20-post31/
- https://users.metu.edu.tr/home402/ozancan/wwwhome/harita.html
- https://rpubs.com/tevfik1461/deprem
- https://rpubs.com/tevfik1461/harita
- https://www.infoworld.com/article/3644848/astonishingly-easy-mapping-in-r-with-mapview.html
- https://tevfikbulutcom.wordpress.com/
- https://ka.gov.tr/sayfalar/kalkinma-planlamasinda-istatistiki-bolge-birimleri-siniflandirmasi–24