将空间点数据框叠加到栅格上后如何保存

How to save after overlaying a spatial point data frame onto raster

我试图将 SpatialPointsDataFrame(黄鸟)叠加到 raster 数据(地图)上。使用以下 R 代码成功:

map1 = plot(map)

overlay_map = plot(yellowbirds,add=TRUE,col="blue")

但是,当我想通过键入 overlay_map 重新生成地图时,生成的输出是 Null 而不是给我地图。

如何将以上内容正确保存为变量,以便无需再次输入代码即可生成地图?

没有任何可重现的例子很难帮助你。

不过,如果你只想保存剧情, 你可以这样做:

map1 <- plot(map)

overlay_map <- recordPlot()  #To save the next plot into an object

plot(yellowbirds,add=TRUE,col="blue")

然后,再次调用该对象:

overlay_map

recordPlot 是正确的方法,只是它将 当前图 (参见 ?recordPlot)保存到一个变量中。我创建了这个 可重现的示例 :

library(raster)
map <- raster(system.file("external/test.grd", package="raster"))
yellowbirds <- SpatialPoints(
  coords = structure(c(179025.023681718, 179606.015156299, 179878.354910009, 
                       180441.19040101, 180913.245974108, 330055.067887591, 330508.967477108, 
                       331398.610672561, 331743.574360594, 332342.721818756), 
                     .Dim = c(5L, 2L), .Dimnames = list(NULL, c("x", "y"))))

plot(map)
map1 <- recordPlot()
plot(yellowbirds, add = TRUE)
overlay_map <- recordPlot()

现在我们杀死当前的设备并重现两个情节:

dev.off()
map1
dev.off()
overlay_map

mapoverlay_map 都应该在空设备中重新创建。即使您 rm(map1)overlay_map 也会正确绘制。

注意: 不要调用 plot(overlay_map),因为它会产生以下错误

Error in xy.coords(x, y, xlabel, ylabel, log) : 'x' is a list, but does not have components 'x' and 'y'