【发布时间】:2021-03-30 12:16:35
【问题描述】:
我无法将数据框对象中的数值变量添加到包含多边形的 SF 对象。所以,我不能用 Ggplot2 创建我的地图。
任何帮助将不胜感激......
非常感谢
理查德
【问题讨论】:
-
嗨,理查德,没有看到您正在使用的数据和代码,您的问题无法回答。请尝试发布minimal reproducible example。
-
请添加您的代码。
我无法将数据框对象中的数值变量添加到包含多边形的 SF 对象。所以,我不能用 Ggplot2 创建我的地图。
任何帮助将不胜感激......
非常感谢
理查德
【问题讨论】:
{sf} 对象是修改后的数据帧。有一列,通常是最后一列,包含几何图形并且大部分是隐藏的+关于坐标参考系统等有一些特殊的调味料。但要点是一个数据框(与早期的 {sp} 对象不同,但我离题了)。
因此,{sf} 数据帧很容易适用于数据连接技术,例如下面代码示例中使用的dplyr::left_join()。
library(sf)
library(dplyr)
library(ggplot2)
shape <- st_read(system.file("shape/nc.shp", package="sf")) # included with sf package
# just some semi - random data
# county with ID 2041 is Mecklenburg (as in Charlotte of Mecklenburg-Strelitz)
some_values <- data.frame(ID = c(2041),
value = c(1))
# left is usually safer than inner join as it does not filter rows
mod_shape <- shape %>%
left_join(some_values, by = c("CNTY_ID" = "ID"))
ggplot(data = mod_shape) +
geom_sf(aes(fill = value)) # viola! a polygon of North Carolina
【讨论】: