用于叠加两层多边形的 Ggplot 和 sf (.shp)

Pat*_*udi 7 r ggplot2 r-sf

我有两个多边形“.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)

Orl*_*gal 9

每个 geom_SOMETHING() 函数都有一个数据参数,您可以在其中配置您正在使用的数据。该参数与 ggplot() 函数中的data参数的作用相同。当您在 ggplot 中指定数据时,所有其他 geom_SOMETHING() 函数都会继承该参数。aes()中的参数也会发生同样的情况

因此,第一个建议是从 ggplot 中删除data = map1aes参数,并将其添加到 geom_sf 函数中。

g <- ggplot() + geom_sf(map1, aes(fill = var1)) + geom_sf(map2)
Run Code Online (Sandbox Code Playgroud)

  • 当我添加 **data =** 时,这有效。`g &lt;- ggplot() + geom_sf(data = map1, aes(fill = var1)) + geom_sf(data = map2)`。如果没有 **data =** 参数,则会出现此错误: **错误:“映射”必须由“aes()”创建。** 谢谢! (6认同)
  • 对于叠加地图上的透明填充:`ggplot() + geom_sf(data = map1, aes(fill = var1)) + geom_sf(data = map2, alpha = 0)` (3认同)
  • @Patricia,我已经尝试了大约 3 个小时来找出如何解决这个问题,而你的广告“data =”提示已经解决了它 - 非常感谢! (2认同)