Вы можете использовать аргумент state_zoom
для zip_choropleth
. Но, как отмечено в пакетных документах, на основе MSA отсутствует хороплет. Пример того, как это выглядит:
states <- unique( zip.regions$state.name)
lower48 <- states[ ! states %in% c('alaska','hawaii') ]
zip_choropleth(df_pop_zip,
state_zoom = lower48 ,
title = "2012 MSA\nZCTA Population Estimates",
legend = "Population")
Это выглядит в основном серым, потому что границы ZCTA отображаются серым, и они плотны в этом масштабе. Если вы запустите код и посмотрите на более высокое разрешение, вы увидите больше заливки.
Альтернативой, которую я бы порекомендовал для вашей задачи, является пакет tidycensus
. Посмотрите фрагмент кода ниже, который, как мне кажется, создает карту, аналогичную той, которая вас интересует. Я выбираю только несколько штатов, чтобы прояснить визуальный эффект, и нанести график на уровне округа. Я также строю график только 85 процентов MSA от общего числа населения. Это исключает Danville Вирджиния, например.
# adapted from https://walkerke.github.io/2017/06/comparing-metros/
library(viridis)
library(ggplot2)
library(tidycensus)
library(tidyverse)
library(tigris)
library(sf)
options(tigris_class = "sf")
options(tigris_use_cache = TRUE)
# census_api_key("YOUR KEY HERE")
acs_var <- 'B01003_001E'
tot <- get_acs(geography = "county", variables = acs_var, state=c("PA", "VA", "DC","MD"),
geometry = TRUE)
head(tot)
metros <- core_based_statistical_areas(cb = TRUE) %>%
select(metro_name = NAME)
wc_tot <- st_join(tot, metros, join = st_within,
left = FALSE)
pct85 <- wc_tot %>% group_by(metro_name) %>%
summarise(tot_pop=sum(estimate)) %>% summarise(pct85 = quantile(tot_pop, c(0.85)))
pct85_msas = wc_tot %>% group_by(metro_name) %>%
summarise(tot_pop=sum(estimate)) %>% filter(tot_pop > pct85$pct85[1])
head(wc_tot)
ggplot(filter(wc_tot, metro_name %in% pct85_msas$metro_name),
aes(fill = estimate, color = estimate)) +
geom_sf() +
coord_sf(crs=3857) +
#facet_wrap(~metro_name, scales = "free", nrow = 1) +
theme_minimal() +
theme(aspect.ratio = 1) +
scale_fill_viridis() +
scale_color_viridis()
Итоговый участок:
Линия фасета, которую я прокомментировал, кажется, является областью активного развития в ggplot. Я получал сообщение об ошибке, но упомянутая мною исходная статья показывает, как ее можно эффективно использовать для отображения одной панели на MSA, что имеет большой смысл. См https://github.com/tidyverse/ggplot2/issues/2651.