choropleth: Рисуете карты уровня MSA?

Мой вопрос касается построения всей карты США на уровне MSA через choroplethr и choroplethrZip.

В приведенном ниже примере мы наносим 1) данные переписи населения на карту США на уровне округов и 2) увеличенную карту выбранного уровня столичного/микрополитического статистического района (MSA).

Пример кода R:

library(choroplethr)
library(choroplethrZip)

?zip.regions
data(zip.regions)
head(zip.regions)

?df_pop_county
data(df_pop_county)
df_pop_county

?df_pop_zip
data(df_pop_zip)

# U.S. County Population Data
county_choropleth(df_pop_county, legend = "Population")

# NY-NJ-PA MSA Population Data
zip_choropleth(df_pop_zip,
               msa_zoom = "New York-Newark-Jersey City, NY-NJ-PA",
               title    = "2012 NY-Newark-Jersey City MSA\nZCTA Population Estimates",
               legend   = "Population")

Вместо того, чтобы просто увеличить конкретный MSA, мы можем также построить целое Карта США уровня MSA? Такой подход, как

zip_choropleth(df_pop_zip, legend = "Population")

не сработало, а также, скорее всего, нанесет на карту регионы ZCTA, а не регионы MSA.

Благодарю вас!


person Christopher    schedule 03.09.2018    source источник


Ответы (1)


Вы можете использовать аргумент 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")

R график населения США

Он выглядит в основном серым, потому что границы ZCTA отображаются серым цветом и в этом масштабе они плотные. Если вы запустите код и посмотрите в более высоком разрешении, вы увидите больше заливки.

Альтернативой, которую я бы порекомендовал для вашей задачи, является пакет tidycensus. См. приведенный ниже фрагмент кода, который, как мне кажется, создает карту, похожую на то, что вас интересует. Я выбираю только несколько штатов, чтобы прояснить визуальное представление, и рисую на уровне округа. Я также отмечаю только верхние 85 процентов MSA от общей численности населения. Например, это исключает Danville Virginia.

# 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.

person vpipkt    schedule 05.09.2018