在Ggplot中添加一层不与之前的参数重叠

Add a layer without overlapping the previous parameters in Ggplot

我需要这两件事发生:

  1. 图层(地图)1:图例中的这些地图元素不应该有边界线(color = NA)!

  2. 图层(地图)2:图例中的这个地图元素应该有一条红色边框线(颜色="red")。

问题:当我添加 "layer 2" 时,"layer 1" 图例中的所有地图元素也将其边框更改为红色。

注意:这只发生在传说中!地图边界没有变化,绘制正确。

这是 运行 在 R 中的示例:

运行只有第1层,是正确的,地图和图例上的元素没有边框颜色:

library("sf"); library("ggplot2")
library("rnaturalearth"); library("rnaturalearthdata") #packages containing the example layers

layer1 <- ne_countries(returnclass = "sf")

ggplot() +
  geom_sf(data = layer1, #layer 1
          aes(fill = as.factor(region_un)), # example of variable
          colour = NA) # removing the borders

图例元素中没有边框颜色的第 1 层:

但是,添加第二层时,所有元素都有红色边框,包括第 1 层:

layer2 <- layer1[layer1$region_un == "Africa", ] # layer 2

ggplot() +
  geom_sf(data = layer1, #layer 1
          aes(fill = as.factor(region_un)),
          colour = NA) + # removing the borders
  geom_sf(data = layer2 , #layer 2
          aes(fill = region_wb), 
          alpha = 0, # transparent fill
          colour = "red") # red border line 

第 1 层和第 2 层,图例的所有元素都带有红色边框颜色:

library("sf"); library("ggplot2")
library("rnaturalearth"); library("rnaturalearthdata") #packages containing the example layers

layer1 <- ne_countries(returnclass = "sf")

layer2 <- layer1[layer1$region_un == "Africa", ] # layer 2

ggplot() +
  geom_sf(data = layer1, #layer 1
          aes(fill = as.factor(region_un)),
          colour = NA) + # removing the borders
  geom_sf(data = layer2 , #layer 2
          aes(fill = region_wb), 
          alpha = 0, # transparent fill
          colour = "red") + # red border line 
  guides(fill = guide_legend ( 
                   override.aes = list(colour = c(NA, NA, NA, NA, NA, "red", 
                                                  NA, NA, "red"))))