我有一些坐标,例如:
library(tidyverse)
library(haven)
library(tidycensus)
library(tigris)
coords <- data.frame(lat = c(38.09720, 36.85298, 31.31517, 21.48344), long = c(-121.38785, -75.97742, -85.85522, -158.03648))
然后我得到一张美国地图:
geo <- get_acs(geography = "state",
variables = c(x = "B04006_036"),
year = 2021,
geometry = TRUE,
keep_geo_vars=TRUE) %>%
filter(STATEFP!="72")
#to get alaska and hawaii in the picture
geo <- shift_geometry(geo)
然后我尝试绘制状态图,并叠加坐标:
ggplot(data = coords) +
geom_point(aes(x=lat, y=long)) +
geom_sf(fill = "transparent", color = "gray50", size = 1, data = geo %>% group_by(STATEFP) %>% summarise()) +
theme(panel.background = element_rect(fill = 'white')) +
theme(panel.grid = element_blank(),axis.title = element_blank(),
axis.text = element_blank(),axis.ticks = element_blank(),
panel.border = element_blank())
得出的结果为:
但是,这不起作用,因为它生成的地图上所有坐标似乎都位于同一位置。我该如何修改以使地图和坐标处于同一比例?
这只是一个投影错误!您需要告诉 R(更具体地说是 sf)您的坐标位于哪个坐标参考系中。我假设它们位于典型的 WGS 1984(EPSG:4326)中。然后我们可以从您的
coords
df 创建一个 sf 对象并使用 geom_sf 进行绘图。