我有两个多边形“.shp”文件。我需要一个通过填写一个变量出现在地图上,另一个仅出现在边界上,与第一个变量重叠。
我已经使用过“ggplot2”和“sf”。
我使用“ggplot”和“geom_sf”绘制了一张地图(“map1”),该地图由多边形分层。
我使用“map1”中包含的变量(“var1”)作为“填充”。
现在,我需要在顶部添加(覆盖)另一层多边形(“map2”)。这必须是“透明填充”或“无填充”。只出现边框的轮廓。
library(ggplot2); library(sf)
map1 <- st_read("m1.shp") #reading polygon layer map 1
map2 <- st_read("m2.shp")#reading polygon layer map 2
g <- ggplot(map1, aes(fill = var1)) +
geom_sf()
Run Code Online (Sandbox Code Playgroud)
我如何添加“map2”来覆盖此地图?
这个想法是:
g <- ggplot(map1, aes(fill = var1)) +
geom_sf() +
ggplot(map2, aes()) +
geom_sf()
#Error: Don't know how to add ggplot(map2, aes()) to a plot
Run Code Online (Sandbox Code Playgroud)
每个 geom_SOMETHING() 函数都有一个数据参数,您可以在其中配置您正在使用的数据。该参数与 ggplot() 函数中的data参数的作用相同。当您在 ggplot 中指定数据时,所有其他 geom_SOMETHING() 函数都会继承该参数。aes()中的参数也会发生同样的情况
因此,第一个建议是从 ggplot 中删除data = map1和aes参数,并将其添加到 geom_sf 函数中。
g <- ggplot() + geom_sf(map1, aes(fill = var1)) + geom_sf(map2)
Run Code Online (Sandbox Code Playgroud)