在R中使用ggplot 2和tigris放大Map/ choropleth

iszxjhcz  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(111)

我有以下代码,可以创建纽约市县061和047的Map:

library(tidycensus)
library(tidyverse)
library(tigris)

ny_data <- get_acs(
  geography = "tract",
  variables = "B19013_001",
  state = "NY",
  county = c("061","047"),
  year = 2019,
  geometry = TRUE,
  cb = FALSE) %>%
  st_transform(26918) %>%
  erase_water(year = 2019)

ggplot(data=ny_data, aes(fill = estimate)) + 
  geom_sf(color = NA) + 
  scale_fill_viridis_c(option = "magma") +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

NYC map1
但是,我想稍微放大一下这张Map。我知道我应该使用coord_sf函数。但是,当我将函数添加到ggplot时,我得到了意想不到的结果:

ggplot(data=ny_data, aes(fill = estimate)) + 
  geom_sf(color = NA) + 
  coord_sf(xlim = c(-74.05, -73.9), ylim = c(40.6, 40.85)) +
  scale_fill_viridis_c(option = "magma") +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

NYC map2
我怀疑这可能与坐标系统有关,但我不熟悉地理空间数据,也不知道如何修复它。这也可能与“st_transform”函数有关,该函数用于帮助我擦除水域。如果你能帮忙的话,我将不胜感激。
摘要:我试图使用coord_sf函数放大Map区域,经度和纬度的x和y限制不像预期的那样工作。

kupeojn6

kupeojn61#

我已经解决了我自己的问题,张贴在这里的其他人谁可能有同样的问题。
如上所述,问题出在“st_transform”函数中。我相信,但我不确定,该功能基本上是转换我的地理数据只是纽约县061和047的投影对整个纽约州(26918是EPSG代码为纽约https://epsg.io/26918)。
此代码工作:

ny_data <- get_acs(
  geography = "tract",
  variables = "B19013_001",
  state = "NY",
  county = c("061","047"),
  year = 2019,
  geometry = TRUE,
  cb = FALSE) %>%
  #st_transform(26918) %>%
  erase_water(year = 2019)

ggplot(data=ny_data, aes(fill = estimate)) + 
  geom_sf(color = NA) + 
  coord_sf(xlim = c(-74.05, -73.9), ylim = c(40.6, 40.85)) +
  scale_fill_viridis_c(option = "magma") +
  theme_minimal() +
  theme(panel.grid.major = element_blank(), 
        panel.grid.minor = element_blank(),
        axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

相关问题