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

Ggplot and sf for overlaying two layers of polygons (.shp)

我有两个多边形“.shp”文件。我需要一个通过填充一个变量出现在地图上,另一个只出现在边界上,与第一个变量重叠。

我已经用过'ggplot2'和'sf'。

我绘制了一张地图 ('map1'),它使用多边形分层,使用 'ggplot' 和 'geom_sf'。

我使用 'map1' 中包含的变量 ('var1') 作为 'fill'。

现在,我需要在上面添加(覆盖)另一层多边形 ('map2')。这必须是 'transparent fill' 或 'no fill'。只出现边框的轮廓。

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() 

如何添加 '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

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

中的参数也是如此

所以第一个建议是从 ggplot 中删除 data = map1aes 参数并将其添加到 geom_sf功能。

g <- ggplot() + geom_sf(map1, aes(fill = var1)) + geom_sf(map2)