--- title: "Plot Municipal Choropleth Maps" description: "Use Okinawa municipal boundaries and map municipality population." output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Plot Municipal Choropleth Maps} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", message = FALSE, fig.width = 6, fig.height = 6.5, dpi = 120, fig.bg = "white", dev.args = list(bg = "white") ) jpmap_build_full_vignettes <- identical(tolower(Sys.getenv("JPMAP_FULL_VIGNETTES")), "true") || identical(tolower(Sys.getenv("IN_PKGDOWN")), "true") jpmap_available_data <- if (jpmap_build_full_vignettes) { jpmap::available_jpmap_data() } else { jpmap::available_jpmap_data(data_dir = tempfile()) } jpmap_has_okinawa_data <- any(jpmap_available_data$year == 2024 & jpmap_available_data$pref_code == "47") ``` This example uses official MLIT N03 municipal boundaries for Okinawa Prefecture as of January 1, 2024. It maps one simple fill variable: 2020 census population by municipality. The figure focuses on Okinawa Island so the municipal boundaries are legible; the source boundary file can still contain the rest of Okinawa Prefecture. Population values are 2020 Census values from Statistics Bureau Japan as tabulated by [CityPopulation.de](https://www.citypopulation.de/en/japan/admin/47__okinawa/). ```{r, eval = jpmap_has_okinawa_data} library(tidyverse) library(jpmap) okinawa_main_island <- c( "那覇市", "宜野湾市", "浦添市", "名護市", "糸満市", "沖縄市", "豊見城市", "うるま市", "南城市", "国頭村", "大宜味村", "東村", "今帰仁村", "本部町", "恩納村", "宜野座村", "金武町", "読谷村", "嘉手納町", "北谷町", "北中城村", "中城村", "西原町", "与那原町", "南風原町", "八重瀬町" ) okinawa_population_2020 <- tribble( ~municipality_ja, ~population_2020, "那覇市", 317625L, "宜野湾市", 100125L, "浦添市", 115690L, "名護市", 63554L, "糸満市", 61007L, "沖縄市", 142752L, "豊見城市", 64612L, "うるま市", 125303L, "南城市", 44043L, "国頭村", 4517L, "大宜味村", 3092L, "東村", 1598L, "今帰仁村", 8894L, "本部町", 12530L, "恩納村", 10869L, "宜野座村", 5833L, "金武町", 10806L, "読谷村", 41240L, "嘉手納町", 13521L, "北谷町", 28201L, "北中城村", 17969L, "中城村", 22157L, "西原町", 34984L, "与那原町", 19695L, "南風原町", 40440L, "八重瀬町", 30941L ) okinawa_main_island_min_area <- 5e6 keep_okinawa_main_island <- function(map) { filtered <- map |> filter(municipality_ja %in% okinawa_main_island) filtered |> mutate(area_m2 = as.numeric(sf::st_area(filtered))) |> filter(area_m2 >= okinawa_main_island_min_area) |> select(-area_m2) } okinawa_main_map <- jp_map("municipality", include = "Okinawa", inset = FALSE) |> keep_okinawa_main_island() |> jp_map_join(okinawa_population_2020, by = "municipality_ja") ``` ```{r municipal-population, eval = jpmap_has_okinawa_data} ggplot(okinawa_main_map) + geom_sf( aes(fill = population_2020), color = "grey35", linewidth = 0.12 ) + coord_sf( crs = jpmap_crs(), datum = sf::st_crs(4326) ) + scale_fill_gradient( low = "#EAF2FF", high = "#001040", labels = function(x) format(x, big.mark = ",", scientific = FALSE), name = "Population" ) + labs( title = "Okinawa Island municipality population", caption = paste( "Boundary: MLIT N03, January 1, 2024.", "Population: 2020 Census, Statistics Bureau Japan via CityPopulation.de.", sep = "\n" ) ) + theme_gray() + theme( axis.title = element_blank(), panel.grid.minor = element_blank(), legend.background = element_rect(fill = "white", color = NA), plot.title = element_text(face = "bold", color = "#001040"), plot.caption = element_text(color = "#2C2A29", hjust = 0, size = 8) ) ``` For other prefectures, first build the prefecture's municipal boundaries with `jpmap_build_data(year = 2024, prefecture = "...")`, then join a table with one row per municipality.