#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")