Untuk LBB kali ini akan menggunakan data YOGYA_member dimana saya akan menggunakan mapshaper untuk memperoleh geom di Kota Bandung dan Kab. Bandung.
Langkah-langkah yang akan saya lakukan adalah sebagai berikut.
Masukkin raw data shapefile kedalam (https://mapshaper.org). Data yang dimasukkan adalah data pada tingkat kelurahan karena saya ingin mengambil data sebaran member YOGYA di Kota dan Kabupaten kirim.
“Import data shapefile ke mapshaper”
Selanjutnya kita export datanya, dan akan muncul tampilan peta indonesia dengan partisi-partisi per kelurahan dari setiap daerahnya.
“Tampilan Peta Indonesia”
Selanjutnya ambil data dari mapshaper hanya pada untuk data daerah Kabupaten dan Kota Bandung. Simpan filenya, lalu kita panggil datanya. Hasil datanya sebagai berikut.
# baca data
bandung <- geojson_read("data_input/lbb/gadm36_IDN_4.json", what = "sp")
# cek data
bandung@dataSetelah berhasil membaca data yang kita peroleh dari mapshaper, kita mengubah datanya dalam bentuk sf.
# Mengubah menjadi bentuk sf
bandung_json <- sf::st_as_sf(bandung)
# Menghilangkan daerah Kepulauan Seribu dan menghilangkan kolom-kolom yang tidak
# dibutuhkan
bandung_json <- bandung_json %>% # Mengganti nama kolom mutate(city = as.factor(NAME_2), sub_district =
# as.factor(NAME_3), urban = as.factor(NAME_4)) %>%
select(-c(id))yogya <- readRDS("data_input/lbb/YOGYA_member.RDS")
yogya_member <- yogya %>% group_by(postal_code, gender) %>% summarise(total_member = n()) %>%
ungroup() %>% arrange(desc(total_member))yogya_member_proses <- yogya_first %>% mutate_if(is.factor, str_to_title) %>% filter(city ==
"Bandung" | city == "Kota Bandung") %>% group_by(city, sub_district, urban, postal_code) %>%
summarise(total_member = n()) %>% ungroup() %>% left_join(yogya_member, by = c(postal_code = "postal_code")) %>%
mutate(total_member = as.integer(total_member.y)) %>% select(-c(total_member.x,
total_member.y))yogya_member_new <- bandung_json %>% left_join(yogya_member_proses, by = c(NAME_2 = "city",
NAME_3 = "sub_district", NAME_4 = "urban")) %>% filter(NAME_2 == "Bandung" |
NAME_2 == "Kota Bandung") %>% tidyr::fill(-c(total_member, gender), .direction = "down") %>%
mutate(total_member = replace_na(total_member, replace = 0)) %>% na.omit()[1] "sf" "data.frame"
leaflet# leaflet
m <- leaflet(yogya_member_sf)
# Pewarnaan
member_F <- yogya_member_sf %>% filter(gender == "F") %>% select(GID_4, NAME_4, total_member)
member_M <- yogya_member_sf %>% filter(gender == "M") %>% select(GID_4, NAME_4, total_member)
# -1 <= x <= 1
col_formula <- (member_F$total_member - member_M$total_member)/(member_F$total_member +
member_M$total_member)
col <- col_formula %>% replace(is.nan(.), 0)
bins <- c(-1, fivenum(col))
pal <- colorBin("RdYlBu", domain = col, bins = bins)
# Popup
popup.cont <- paste("<h2><b>", yogya_member_sf$NAME_4, "</b></h2>", "<h4><b> Female: ",
member_F$total_member, "</h4></b>", "<h4><b> Male: ", member_F$total_member,
"</h4></b>")m %>%
addProviderTiles(providers$CartoDB.DarkMatter) %>%
addPolygons(fillColor = ~pal(col),
weight = 1, #untuk garis pemisah antar daerah
opacity = 1, #untuk garis pemisah antar daerah
color = "black", #untuk garis pemisah antar daerah
dashArray = "3", #untuk garis pemisah antar daerah
fillOpacity = 0.5, #transparansi dari garis satu daerah ke daerah yang lain
label = paste("Kelurahan :", ~NAME_4),
popup = popup.cont) %>%
addLegend("bottomright",
pal = pal,
values = ~col,
title = "Persebaran Member YOGYA",
labFormat = labelFormat(digits = 2),
opacity = 1)