Наложение полигонального слоя на стек растров qplot

#r #ggplot2 #vector #gplots #rastervis

Вопрос:

Я хочу построить 7 файлов TIFF бок о бок, используя gplot , и я хочу наложить на них слой полигона. Я попытался прочитать шейп-файл с помощью st_read , а затем использовать geom_sf или geom_polygon для его построения. Но это не сработало. Это выдавало сообщение об ошибке относительно aes . В конце концов я использовал fortify функцию, а затем использовал geom_path ее для построения графика. Хотя это действительно накладывается, это не то, чего я хочу. Я просто хочу, чтобы границы полигонов были наложены.

P.S. Я не знаю, как создать воспроизводимый растровый и векторный слой. Поэтому, если потребуется, я могу загрузить файлы с образцами.

 shp = fortify(shapefile("E:/Vect/BLOCKS.shp"))
rfiles = list.files(path = "E:/Rast", pattern = "*.tif", full.names = TRUE)
pfiles = stack(rfiles[c(7:14)])

plot1 = gplot(pfiles1)   
  geom_tile(aes(fill = value))  
  geom_path(data=shp,aes(long, lat),colour="red")   
  facet_wrap(~ variable, ncol = 7)  
  scale_fill_gradientn(colours = magma(30), na.value = "transparent")  
  theme_bw()  
  theme(axis.text = element_blank(), legend.position = "right", legend.direction = "vertical",
        legend.key.height = unit(5, "cm"), legend.key.width = unit(1, "cm"),
        legend.title = element_blank(), legend.text = element_text(size = 30), 
        strip.text = element_text(size = 28, face = "bold"))  
  coord_equal() 

 

введите описание изображения здесь

Ответ №1:

Просто небольшое изменение. Добавить group = group в geom_path

geom_path(data=shp,aes(long, lat, group = group),colour="red")