R ile renk tonlu harita çizimi

Share on:

Bu yazıda R ile harita cizerek, çizdiğimiz haritayı veriye göre renklendireceğim yani renk tonlu harita (choroplet) çizeceğim. R ile harita çizmeyi sağlayan birçok paket var. Bu yazıda harita paketlerine girmeyecek ggplot kullanacağım. Fakat hataları en aza indirmek için rgdal, rgeos, sf ve sp paketlerini yüklemenizde fayda var.

Yine Türkiye haritası çizmenin de birden fazla yöntemi var. Ben burada HDX sitesinden indirdiğim Spatial Polygon verisetini kullanacağım. Önce veriyi R’a aktaralım:

library(rgdal)
library(tidyverse)
trShp1 <- readOGR( 
  dsn= "turkey_administrative/",
  layer="tur_polbnda_adm1",
  verbose=FALSE
)

R’a aktardığımız Spatial Polygon türü veriyi ggplot ile kullanabilmek için dataframe’e dönüştürelim:

trShp1_df = fortify(trShp1, region = "adm1_tr")
trShp1_df$id <- tolower(trShp1_df$id)

Ben bu yazıda illeri sosyo-ekonomik düzeylerine göre renklendireceğim. İllerin sosyo-ekonomik durum verisini internetten edindim. Siz illere ait başka bir veri bulup onu haritalandırabilirsiniz. Burada önemli olan iki şey:

  1. Benim yaptığım gibi il adlarını haritaya eklemek istiyorsanız, illerin lat, long verisini de eklemeniz gerekiyor. Bu veriyi de internetten rahatlıkla bulabilirisiniz ve Excel tarzı bir programla iki veriyi birleştirebilirisiniz.
  2. Değişken adlarını değiştirmeyi unutmayın. Sosyo-ekonomik veriyi R’a yüklüyorum:
tr_se <- read_csv("tr.socio.eco.csv")
tr_se$id <- tolower(tr_se$id)
#tr_se$se_value <- tr_se$se_value + 2

Son olarak haritayı çiziyorum:

ggplot(tr_se, aes(map_id = id)) + 
  geom_map(aes(fill = se_value), map =trShp1_df) +
  expand_limits(x = trShp1_df$long, y = trShp1_df$lat) + 
  scale_fill_distiller(name = "", palette = "Spectral") +
  coord_fixed(1.3) +
  geom_text(data = tr_se, 
            aes(x = tr_se$lng, 
                y = tr_se$lat, label = paste(toupper(substr(tr_se$id, 1, 1)), substr(tr_se$id, 2, nchar(tr_se$id)), sep="")),
            size = 2, hjust = 0.75) +
  labs(title = "Socio-Economic Development, 2003", x = element_blank(), y = element_blank(), 
       fill='2013`') +   theme(legend.position = "bottom") +
  theme(panel.background = element_blank())

Sosyo-ekonomik düzeyi en düşük iller mavi, en yüksek iller kırmızı olmak üzere iller indeks değerlerine göre renklendi.ggplot baskıda güzel görünecek haritalar üretmemizi sağlıyor. leaflet ve tmap gibi paketlerle web sayfalarında kullanılabilecek interaktif haritalar üretebilirsiniz.