我的问题涉及通过choroplethrchoroplethrZip在MSA级别上绘制整个美国 map 。

在下面的示例中,我们在1)县级的美国 map 上绘制人口普查信息,以及2)在选定的大都会/小城市统计区域(MSA)级别上缩放的 map 。

示例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")

除了将zoom放入特定的MSA中,我们还可以绘制整个MSA级别的美国 map 吗?像
zip_choropleth(df_pop_zip, legend = "Population")

无效,也可能会绘制ZCTA区域而不是MSA区域。

谢谢!

最佳答案

您可以将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 - choroplethr:绘制MSA级别的 map ?-LMLPHP

它看起来主要是灰色的,因为ZCTA边框是用灰色绘制的,并且在此比例下它们是密集的。如果运行代码并查看更高的分辨率,则可以看到更多的填充。

我为您的任务推荐的替代方法是tidycensus包。请参见下面的代码片段,我相信该代码片段会创建与您感兴趣的 map 相似的 map 。我仅选择一些州来澄清视觉,并在县级进行绘图。我还仅按总人口列出了最高MSA的85%。例如,这消除了弗吉尼亚州的丹维尔(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()

结果图:

r - choroplethr:绘制MSA级别的 map ?-LMLPHP

我已经注释掉的方面行似乎是ggplot中活跃发展的领域。我遇到了一个错误,但是我提到的source article显示了如何充分利用它来显示每个MSA一个面板,这很有意义。参见https://github.com/tidyverse/ggplot2/issues/2651

关于r - choroplethr:绘制MSA级别的 map ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52150767/

10-12 17:41