Добавить слой без наложения предыдущих параметров в Ggplot - PullRequest
2 голосов
/ 03 октября 2019

Мне нужно, чтобы эти две вещи произошли:

  1. Слой (карта) 1: Эти элементы карты в легенде не должны иметь границу (цвет = NA)!

  2. Слой (карта) 2: Этот элемент карты в легенде должен иметь красную границу (color = "red").

Проблема: Когда я добавляю «слой 2», все элементы карты в легенде «слоя 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 без цвета рамки в элементе легенды:

img1

Однако при добавлении второго слоя все элементыиметь красную рамку, включая слой 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, со всеми элементами легенды с красным цветом рамки:

img2

1 Ответ

1 голос
/ 22 октября 2019
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"))))

enter image description here

...