Ggplot и sf для наложения двух слоев полигонов (.shp) - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть два многоугольных файла .shp.Мне нужно, чтобы одна появилась на карте, заполнив одну переменную, а другая - только на границах, перекрывая первую.

Я уже использовал 'ggplot2' и 'sf'.

Я построил карту ('map1'), которая состоит из полигонов, используя 'ggplot' и 'geom_sf'.

Я использую переменную ('var1'), содержащуюся в 'map1', в качестве «заливки».

Теперь мне нужно добавить (наложить) еще один слой многоугольников сверху ('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() 

Как я могу добавить '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

1 Ответ

0 голосов
/ 20 сентября 2019

Каждая функция geom_SOMETHING () имеет аргумент data , в котором вы можете настроить данные, которые вы используете.Этот аргумент играет ту же роль, что и аргумент data в функции ggplot ().Когда вы указываете data в ggplot, все остальные функции geom_SOMETHING () наследуют аргумент.То же самое происходит с аргументами в aes ()

Итак, первая рекомендация - удалить аргументы data = map1 и aes из ggplot идобавьте его в функцию geom_sf.

g <- ggplot() + geom_sf(map1, aes(fill = var1)) + geom_sf(map2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...