So we have data from data.jakarta and we’ll try to visualize Jakarta Kepadatan Penduduk.
options(scipen = 9999)
library(indonesia)
library(plotly)
## Loading required package: ggplot2
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
library(ggplot2)
library(tidyverse)
## -- Attaching packages ----------------------------------------------- tidyverse 1.2.1 --
## v tibble 2.0.0 v purrr 0.2.5
## v tidyr 0.8.2 v dplyr 0.7.8
## v readr 1.3.1 v stringr 1.3.1
## v tibble 2.0.0 v forcats 0.3.0
## -- Conflicts -------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks plotly::filter(), stats::filter()
## x dplyr::lag() masks stats::lag()
library(sf)
## Linking to GEOS 3.6.1, GDAL 2.2.3, PROJ 4.9.3
## [1] FALSE
dki <- id_map("jakarta", "kelurahan")
datvis <- st_as_sf(lotlan, coords = c("longitude", "latitude"))
st_crs(datvis) <- st_crs(dki)
datfinal <- st_join(dki, datvis, left=FALSE)
## although coordinates are longitude/latitude, st_intersects assumes that they are planar
ggplot(datfinal) +
geom_sf(aes(fill=jumlaluas_wilayah), color="gray75")

ggplot(datfinal) +
geom_sf(aes(fill=jumlah_kepadatanjiwakm2), color="gray100") +
guides(fill=guide_legend(title=expression("Jumlah Kepadatan Jiwa (jiwa/km^2)")) +
theme(panel.background = element_blank(),
panel.grid.major.y = element_blank())
)

colnames(datfinal)[15] <- "jumlahkepadatan"
ggplotly(
ggplot(data = datfinal, aes(text = paste("Kelurahan:", nama_kelurahan.x,"\n","Jumlah kepadatan(jiwa/km^2):", jumlahkepadatan))) +
geom_sf(aes(fill=jumlahkepadatan), color="gray100", show.legend = T) +
#guides(fill=guide_legend(title=NULL)) +
theme(panel.background = element_blank(),
#legend.position = "top",
axis.line=element_blank(),axis.text.x=element_blank(),
axis.text.y=element_blank(),axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank()) +
labs(x = "", y = "", title = "Kepadatan Penduduk DKI Jakarta 2017", caption = "source: data.jakarta.go.id" ),
tooltip = "text"
)
datfinal[datfinal$nama_kelurahan.x == "jelambar baru",]
## Simple feature collection with 0 features and 15 fields
## bbox: xmin: NA ymin: NA xmax: NA ymax: NA
## epsg (SRID): 4326
## proj4string: +proj=longlat +datum=WGS84 +no_defs
## [1] kode_provinsi nama_provinsi.x kode_kota
## [4] nama_kota kode_kecamatan nama_kecamatan.x
## [7] kode_kelurahan nama_kelurahan.x tahun
## [10] nama_provinsi.y nama_kabupaten_kota nama_kelurahan.y
## [13] nama_kecamatan.y jumlaluas_wilayah jumlahkepadatan
## [16] geometry
## <0 rows> (or 0-length row.names)
datfinal %>% arrange(desc(jumlahkepadatan))
## Simple feature collection with 249 features and 15 fields
## geometry type: POLYGON
## dimension: XY
## bbox: xmin: 106.6858 ymin: -6.373226 xmax: 106.9734 ymax: -6.088038
## epsg (SRID): 4326
## proj4string: +proj=longlat +datum=WGS84 +no_defs
## First 10 features:
## kode_provinsi nama_provinsi.x kode_kota nama_kota
## 1 31 DAERAH KHUSUS IBUKOTA JAKARTA 3174 Jakarta Barat
## 2 31 DAERAH KHUSUS IBUKOTA JAKARTA 3171 Jakarta Selatan
## 3 31 DAERAH KHUSUS IBUKOTA JAKARTA 3173 Jakarta Pusat
## 4 31 DAERAH KHUSUS IBUKOTA JAKARTA 3173 Jakarta Pusat
## 5 31 DAERAH KHUSUS IBUKOTA JAKARTA 3173 Jakarta Pusat
## 6 31 DAERAH KHUSUS IBUKOTA JAKARTA 3173 Jakarta Pusat
## 7 31 DAERAH KHUSUS IBUKOTA JAKARTA 3173 Jakarta Pusat
## 8 31 DAERAH KHUSUS IBUKOTA JAKARTA 3173 Jakarta Pusat
## 9 31 DAERAH KHUSUS IBUKOTA JAKARTA 3174 Jakarta Barat
## 10 31 DAERAH KHUSUS IBUKOTA JAKARTA 3174 Jakarta Barat
## kode_kecamatan nama_kecamatan.x kode_kelurahan nama_kelurahan.x tahun
## 1 3174040 Grogol Petamburan 3174040007 Jelambar Baru 2017
## 2 3171050 Kebayoran Lama 3171050005 Grogol Selatan 2017
## 3 3173040 Johar Baru 3173040002 Kampung Rawa 2017
## 4 3173040 Johar Baru 3173040004 Galur 2017
## 5 3173040 Johar Baru 3173040003 Tanah Tinggi 2017
## 6 3173060 Kemayoran 3173060005 Utan Panjang 2017
## 7 3173070 Sawah Besar 3173070004 Karang Anyar 2017
## 8 3173070 Sawah Besar 3173070004 Karang Anyar 2017
## 9 3174060 Taman Sari 3174060006 Keagungan 2017
## 10 3174050 Tambora 3174050006 Jembatan Besi 2017
## nama_provinsi.y nama_kabupaten_kota nama_kelurahan.y
## 1 PROVINSI DKI JAKARTA JAKARTA BARAT jelambar baru
## 2 PROVINSI DKI JAKARTA JAKARTA SELATAN grogol selatan
## 3 PROVINSI DKI JAKARTA JAKARTA PUSAT kampung rawa
## 4 PROVINSI DKI JAKARTA JAKARTA PUSAT galur
## 5 PROVINSI DKI JAKARTA JAKARTA PUSAT tanah tinggi
## 6 PROVINSI DKI JAKARTA JAKARTA PUSAT utan panjang
## 7 PROVINSI DKI JAKARTA JAKARTA PUSAT karang anyar
## 8 PROVINSI DKI JAKARTA JAKARTA PUSAT karang anyar
## 9 PROVINSI DKI JAKARTA JAKARTA BARAT keagungan
## 10 PROVINSI DKI JAKARTA JAKARTA BARAT jembatan besi
## nama_kecamatan.y jumlaluas_wilayah jumlahkepadatan
## 1 GROGOL PETAMBURAN 0.14 304082.60
## 2 KEBAYORAN LAMA 0.29 177591.62
## 3 JOHAR BARU 0.30 90292.26
## 4 JOHAR BARU 0.26 87935.11
## 5 JOHAR BARU 0.62 76118.16
## 6 KEMAYORAN 0.54 68103.66
## 7 SAWAH BESAR 0.51 65788.65
## 8 SAWAH BESAR 0.51 65788.65
## 9 TAMAN SARI 0.32 64568.64
## 10 TAMBORA 0.55 63332.13
## geometry
## 1 POLYGON ((106.7814 -6.15281...
## 2 POLYGON ((106.7907 -6.22363...
## 3 POLYGON ((106.8598 -6.18100...
## 4 POLYGON ((106.8519 -6.17792...
## 5 POLYGON ((106.852 -6.175871...
## 6 POLYGON ((106.8554 -6.16643...
## 7 POLYGON ((106.83 -6.149212,...
## 8 POLYGON ((106.83 -6.149212,...
## 9 POLYGON ((106.8125 -6.14822...
## 10 POLYGON ((106.7975 -6.14882...
Also can access the interactive plot here