I. Setting
Abaikan bagian ini. Lansung saja loncat ke Tentang Data
. Function biar gak perlu ganti backslash
(\) jadi slash (/).
path <- function() gsub ( "\\\\", "/", readClipboard () )
#Copy path, Panggil function di console
#Copy r path, paste ke var yang diinginkan
Function biar gak perlu repot buat
install("") atau load() package.
# -=( Install & Load Package Function )=-
install_load <- function (package1, ...) {
# convert arguments to vector
packages <- c(package1, ...)
# start loop to determine if each package is installed
for(package in packages){
# if package is installed locally, load
if(package %in% rownames(installed.packages()))
do.call('library', list(package))
# if package is not installed locally, download, then load
else {
install.packages(package)
do.call("library", list(package))
}
}
}
SET Working Directory
A. Tentang Data
Data yang digunakan adalah Data Demografi Kabupaten Sukabumi tahun
2019 yang
meliputi Jumlah Penduduk, Kepadatan Penduduk,
 Jumlah Desa dan Kelurahan, Dan Luas Wilayah.
Data bersumber dari Badan Pusat Statistik dengan jumlah kecamatan
sebanyak \(47\) kecamatan.
Source :
Github : Github Tugas Praktikum Pekan 3 Regresi Spasial Angga Fathan Rofiqy
Jumlah Penduduk: Jumlah Penduduk Kabupaten Sukabumi Per Kecamatan (2019)Kepadatan Penduduk: Kepadatan Penduduk Kabupaten Sukabumi Per Kecamatan (2019)Jumlah Desa dan Kelurahan: Jumlah Desa dan Kelurahan Kabupaten Sukabumi Per kecamatan (2019)Kode BPS & Kode Kemendagri: Kode BPS & Kode Kemendagri Kabupaten SukabumiLuas Wilayah: Luas Wilayah Kabupaten Sukabumi Per Kecamatan (2019)Theme : Rmd Themes
Import Data Demografi Kabupaten Sukabumi
install_load('rio')
raw.data <-
import("https://raw.githubusercontent.com/Zen-Rofiqy/STA1352-RegSpas/main/03/data.csv")
install_load('dplyr','kableExtra')
## Warning: package 'dplyr' was built under R version 4.2.3
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
##
## Attaching package: 'kableExtra'
## The following object is masked from 'package:dplyr':
##
## group_rows
kable(head(raw.data)) %>%
kable_styling(bootstrap_options = "striped", full_width = FALSE)
| Kabupaten | Kecamatan | Kode BPS | Kode Kemendagri | Jumlah Penduduk | Kepadatan Penduduk | Jumlah Desa | Luas Wilayah (km2/sq.km) |
|---|---|---|---|---|---|---|---|
| Kabupaten Sukabumi | CIEMAS | 3202010 | 32.02.22 | 51.361 | 163 | 7 | 314,14 |
| Kabupaten Sukabumi | CIRACAP | 3202020 | 32.02.26 | 53.105 | 396 | 5 | 134,22 |
| Kabupaten Sukabumi | WALURAN | 3202021 | 32.02.20 | 28.859 | 287 | 9 | 100,64 |
| Kabupaten Sukabumi | SURADE | 3202030 | 32.02.24 | 78.801 | 659 | 6 | 119,59 |
| Kabupaten Sukabumi | CIBITUNG | 3202031 | 32.02.25 | 28.094 | 309 | 9 | 90,76 |
| Kabupaten Sukabumi | JAMPANG KULON | 3202040 | 32.02.21 | 46.133 | 662 | 6 | 69,66 |
Import Data Spasial
Shapefile diperoleh dari website data.humdata.org. Membaca data
dapat dilakukan dengan menggunakan fungsi st_read() dari
paket sf.
install_load('sf')
## Warning: package 'sf' was built under R version 4.2.3
## Linking to GEOS 3.9.3, GDAL 3.5.2, PROJ 8.2.1; sf_use_s2() is TRUE
map_indonesia <- st_read("idn_adm_bps_20200401_shp/idn_admbnda_adm3_bps_20200401.shp", quiet = TRUE)
Gambaran data.
kable(head(map_indonesia)) %>%
kable_styling(bootstrap_options = "striped", full_width = FALSE)
| Shape_Leng | Shape_Area | ADM3_EN | ADM3_PCODE | ADM3_REF | ADM3ALT1EN | ADM3ALT2EN | ADM2_EN | ADM2_PCODE | ADM1_EN | ADM1_PCODE | ADM0_EN | ADM0_PCODE | date | validOn | validTo | geometry |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.2798656 | 0.0031076 | 2 X 11 Enam Lingkung | ID1306050 | NA | NA | NA | Padang Pariaman | ID1306 | Sumatera Barat | ID13 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | MULTIPOLYGON (((100.2811 -0… |
| 0.7514001 | 0.0169255 | 2 X 11 Kayu Tanam | ID1306052 | NA | NA | NA | Padang Pariaman | ID1306 | Sumatera Barat | ID13 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | MULTIPOLYGON (((100.3317 -0… |
| 0.6900061 | 0.0246364 | Abab | ID1612030 | NA | NA | NA | Penukal Abab Lematang Ilir | ID1612 | Sumatera Selatan | ID16 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | MULTIPOLYGON (((104.2463 -3… |
| 0.6483629 | 0.0107613 | Abang | ID5107050 | NA | NA | NA | Karang Asem | ID5107 | Bali | ID51 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | MULTIPOLYGON (((115.6207 -8… |
| 0.2437073 | 0.0011605 | Abeli | ID7471021 | NA | NA | NA | Kota Kendari | ID7471 | Sulawesi Tenggara | ID74 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | MULTIPOLYGON (((122.5898 -3… |
| 1.3541886 | 0.0699569 | Abenaho | ID9432030 | NA | NA | NA | Yalimo | ID9432 | Papua | ID94 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | MULTIPOLYGON (((139.3201 -3… |
Merged Data
Selanjutnya akan dilakukan merged data
peubah Kode BPS raw.data degan tambahan
ID di depannya dan
peubah ADM3_PCODE dari map_indonesia.
mapSukabumi <- map_indonesia %>%
inner_join(raw.data %>%
mutate(`Kode BPS` = paste0("ID", `Kode BPS`))
, by = c("ADM3_PCODE" = "Kode BPS"))
kable(head(mapSukabumi)) %>%
kable_styling(bootstrap_options = "striped", full_width = FALSE)
| Shape_Leng | Shape_Area | ADM3_EN | ADM3_PCODE | ADM3_REF | ADM3ALT1EN | ADM3ALT2EN | ADM2_EN | ADM2_PCODE | ADM1_EN | ADM1_PCODE | ADM0_EN | ADM0_PCODE | date | validOn | validTo | Kabupaten | Kecamatan | Kode Kemendagri | Jumlah Penduduk | Kepadatan Penduduk | Jumlah Desa | Luas Wilayah (km2/sq.km) | geometry |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0.5634651 | 0.0062324 | Bantargadung | ID3202121 | NA | NA | NA | Sukabumi | ID3202 | Jawa Barat | ID32 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | Kabupaten Sukabumi | BANTARGADUNG | 32.02.04 | 37.820 | 499 | 13 | 75,85 | MULTIPOLYGON (((106.6952 -6… |
| 0.3278686 | 0.0015397 | Bojong Genteng | ID3202261 | NA | NA | NA | Sukabumi | ID3202 | Jawa Barat | ID32 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | Kabupaten Sukabumi | BOJONG GENTENG | 32.02.14 | 37.695 | 2177 | 6 | 17,32 | MULTIPOLYGON (((106.7346 -6… |
| 0.4201519 | 0.0030563 | Caringin | ID3202212 | NA | NA | NA | Sukabumi | ID3202 | Jawa Barat | ID32 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | Kabupaten Sukabumi | CARINGIN | 32.02.31 | 48.102 | 1304 | 9 | 36,89 | MULTIPOLYGON (((106.9068 -6… |
| 0.4838461 | 0.0046070 | Ciambar | ID3202221 | NA | NA | NA | Sukabumi | ID3202 | Jawa Barat | ID32 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | Kabupaten Sukabumi | CIAMBAR | 32.02.47 | 40.021 | 652 | 8 | 61,34 | MULTIPOLYGON (((106.8788 -6… |
| 0.4805193 | 0.0051767 | Cibadak | ID3202210 | NA | NA | NA | Sukabumi | ID3202 | Jawa Barat | ID32 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | Kabupaten Sukabumi | CIBADAK | 32.02.11 | 118.284 | 1847 | 10 | 64,03 | MULTIPOLYGON (((106.7069 -6… |
| 0.5546292 | 0.0071685 | Cibitung | ID3202031 | NA | NA | NA | Sukabumi | ID3202 | Jawa Barat | ID32 | Indonesia | ID | 2019-12-20 | 2020-04-01 | NA | Kabupaten Sukabumi | CIBITUNG | 32.02.25 | 28.094 | 309 | 9 | 90,76 | MULTIPOLYGON (((106.6076 -7… |
Data spasial dan informasi Demografi Kabupaten Sukabumi sudah
tersedia dalam satu dataframe. Untuk menyajikan dalam peta choropleth,
beberapa paket R dapat digunakan, salah satunya
paket ggplot2 dengan fungsi geom_sf().
B. Visualisasi Geospasial
1. Visualisasi Normal
Konsep dari ggplot2 dalam visualisasi data adalah dengan
mengkombinasikan data, stat dan geom atau layer. Pada perintah
berikut, ggplot() akan menginisiasi layer kosong yang siap
ditambahkan layer-layer lain diatasnya. Lalu geom_sf() akan
memetakan data data, di mana setiap area/poligon akan
diberi gradasi warna sesuai nilai pada kolom JumlahPenduduk.
i. Jumlah Penduduk Kabupaten Sukabumi
install_load('ggplot2')
## Warning: package 'ggplot2' was built under R version 4.2.3
Jumlah_Penduduk <- ggplot() +
geom_sf(data=mapSukabumi, aes(fill=`Jumlah Penduduk`, geometry = geometry)) +
theme_minimal()
Jumlah_Penduduk
Selain kolom Jumlah Penduduk, dapat digunakan
kolom Kepadatan Penduduk untuk menggambarkan permasalahan
kependudukan di Kabupaten Sukabumi.
ii. Kepadatan Penduduk Kabupaten Sukabumi
Kepadatan_Penduduk <- ggplot() +
geom_sf(data=mapSukabumi, aes(fill=`Kepadatan Penduduk`, geometry = geometry)) +
theme_minimal()
Kepadatan_Penduduk
Sebagai tambahan, disajikan juga
data Jumlah Desa dan Kelurahan yang ada di Kabupaten
Sukabumi.
iii. Jumlah Desa & Kelurahan Kabupaten Sukabumi
DesaKelurahan <- ggplot() +
geom_sf(data=mapSukabumi, aes(fill=`Jumlah Desa`, geometry = geometry)) +
theme_minimal()
DesaKelurahan
2. Visualisasi Modifikasi
ggplot2Â dilengkapi dengan banyak opsi untuk mengatur
tampilan dari output. Misalnya scale_fill_gradientn() untuk
mengatur gradasi warna (secara otomatis ataupun
costum), labs() untuk menambahkan judul grafik maupun
keterangan sumbu, theme() untuk mengatur tema (legenda,
jenis dan ukuran huruf, dan
lain-lain), scale_**_continuous() pengaturan sumbu tegak
maupun sumbu mendatar. Selain itu, juga terdapat color Palette yang
dapat digunakan menggunakan library RColorBrewer dengan
function brewer.pal(n,name). n adalah jumlah
warna yang digunakan. Terdapat banyak name yang digunakan,
beberapa contohnya antara
lain BrBG, PRGn, PiYG, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral.
i. Jumlah Penduduk Kabupaten Sukabumi
install_load('RColorBrewer')
colorPalette1 <- brewer.pal(5, "RdYlBu")
Jumlah_Penduduk + scale_fill_gradientn(colors = colorPalette1,
name = "Jumlah Penduduk") +
labs(title = "Jumlah Penduduk Kabupaten Sukabumi") +
theme(legend.text = element_text(size=7),
legend.title = element_text(size=7),
axis.text.x = element_text(size = 7),
axis.text.y = element_text(size = 7),
title = element_text(size=12, face='bold'))
ii. Kepadatan Penduduk Kabupaten Sukabumi
Kepadatan_Penduduk + scale_fill_gradientn(colors = colorPalette1,
name = "Kepadatan Penduduk") +
labs(title = "Kepadatan Penduduk Kabupaten Sukabumi") +
theme(legend.text = element_text(size=7),
legend.title = element_text(size=7),
axis.text.x = element_text(size = 7),
axis.text.y = element_text(size = 7),
title = element_text(size=12, face='bold'))
iii. Jumlah Desa & Kelurahan Kabupaten Sukabumi
DesaKelurahan + scale_fill_gradientn(colors = colorPalette1,
name = "Kepadatan Penduduk") +
labs(title = "Jumlah Desa/Kelurahan di Kabupaten Sukabumi") +
theme(legend.text = element_text(size=7),
legend.title = element_text(size=7),
axis.text.x = element_text(size = 7),
axis.text.y = element_text(size = 7),
title = element_text(size=12, face='bold'))
3. Visualisasi Interaktif
Visualisasi geospasial interaktif dapat digunakan dengan
packages leaflet . Untuk mendapatkan latitude dan
longitude nya dapat dilihat pada Google Maps, Cari lokasi anda,
lalu klik kanan.
i. Jumlah Penduduk Kabupaten Sukabumi
install_load('leaflet','htmltools')
## Warning: package 'leaflet' was built under R version 4.2.3
## Warning: package 'htmltools' was built under R version 4.2.3
# membuat custom palette warna
populationPalette1 <- colorNumeric(
palette = "RdYlBu",
domain = mapSukabumi$`Jumlah Penduduk`
)
# membuat custom popup
popupLabel <- paste0(
"<b>Kecamatan ", mapSukabumi$Kecamatan,"</b><br/>",
"Jumlah Penduduk (jiwa): ", mapSukabumi$`Jumlah Penduduk`, "<br/>",
"Kepadatan Penduduk (jiwa/km2): ", mapSukabumi$`Kepadatan Penduduk`, "<br/>",
"Jumlah Desa: ", mapSukabumi$`Jumlah Desa`) %>%
lapply(HTML)
# membuat peta leaflet
leaflet(mapSukabumi) %>%
addProviderTiles(providers$CartoDB.PositronNoLabels, group = "Light Mode") %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels, group = "Dark Mode") %>%
addPolygons(weight = 1,
opacity = 1,
fillOpacity = 0.9,
label = popupLabel,
color = ~populationPalette1(`Jumlah Penduduk`),
highlightOptions = highlightOptions(color = "white",
weight = 2,
bringToFront = TRUE) ) %>%
addLegend(position = "bottomright",
pal = populationPalette1,
values = ~`Jumlah Penduduk`,
title = "Jumlah\nPenduduk",
opacity = 1) %>%
addLayersControl(position = 'topright',
baseGroups = c("Light Mode", "Dark Mode"),
options = layersControlOptions(collapsed = FALSE)) %>%
setView(lat = -7, lng = 106.6, zoom = 9)
ii. Kepadatan Penduduk Kabupaten Sukabumi
# membuat custom palette warna
populationPalette2 <- colorNumeric(
palette = "RdYlBu",
domain = mapSukabumi$`Kepadatan Penduduk`
)
# membuat peta leaflet
leaflet(mapSukabumi) %>%
addProviderTiles(providers$CartoDB.PositronNoLabels, group = "Light Mode") %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels, group = "Dark Mode") %>%
addPolygons(weight = 1,
opacity = 1,
fillOpacity = 0.9,
label = popupLabel,
color = ~populationPalette2(`Kepadatan Penduduk`),
highlightOptions = highlightOptions(color = "white",
weight = 2,
bringToFront = TRUE) ) %>%
addLegend(position = "bottomright",
pal = populationPalette2,
values = ~`Kepadatan Penduduk`,
title = "Kepadatan\nPenduduk",
opacity = 1) %>%
addLayersControl(position = 'topright',
baseGroups = c("Light Mode", "Dark Mode"),
options = layersControlOptions(collapsed = FALSE)) %>%
setView(lat = -7, lng = 106.6, zoom = 9)
iii. Jumlah Desa & Kelurahan Kabupaten Sukabumi
# membuat custom palette warna
populationPalette3 <- colorNumeric(
palette = "RdYlBu",
domain = mapSukabumi$`Jumlah Desa`
)
# membuat peta leaflet
leaflet(mapSukabumi) %>%
addProviderTiles(providers$CartoDB.PositronNoLabels, group = "Light Mode") %>%
addProviderTiles(providers$CartoDB.DarkMatterNoLabels, group = "Dark Mode") %>%
addPolygons(weight = 1,
opacity = 1,
fillOpacity = 0.9,
label = popupLabel,
color = ~populationPalette3(`Jumlah Desa`),
highlightOptions = highlightOptions(color = "white",
weight = 2,
bringToFront = TRUE) ) %>%
addLegend(position = "bottomright",
pal = populationPalette3,
values = ~`Jumlah Desa`,
title = "Jumlah\nDesa",
opacity = 1) %>%
addLayersControl(position = 'topright',
baseGroups = c("Light Mode", "Dark Mode"),
options = layersControlOptions(collapsed = FALSE)) %>%
setView(lat = -7, lng = 106.6, zoom = 9)