我有2个栅格堆叠在一起:
library(rasterVis)
r1 <- raster(system.file("external/test.grd", package="raster"))
r2 <- r1 / 2
r.stack <- stack(r1, r2)
由于我想稍后为堆栈中的每个特定图层突出显示某些区域,我会根据栅格值创建两个点数据集:
pts1 <- rasterToPoints(r1, spatial=T)
idx <- which(as.data.frame(pts1)[, 1] >= 400)
pts1 <- pts1[idx, 1]
pts2 <- rasterToPoints(r2, spatial=T)
idx <- which(as.data.frame(pts2)[, 1] >= 400)
pts2 <- pts2[idx, 1]
现在,我想用R中的 rasterVis 绘制带有水平图的光栅堆栈。我还想用pts1覆盖r1,用pts2覆盖r2。
但是,只要我添加一个点数据集,它就会用于两个层:
levelplot(r.stack) + layer(sp.points(pts1, pch=20, cex=0.1, col="black"))
如何在仍使用栅格堆栈时如何使用具有特定图层的特定点数据集?
我想通过单独绘制每个图层的特定点数据集,然后使用print.trellis来避免创建我自己的子图。我试过了,但与带有光栅堆栈的levelplot相比,结果还差。
关于如何实现这一点的任何想法?
答案 0 :(得分:4)
使用panel.number
功能,您可以根据您所在的面板对数据进行分组:
pts <- list(pts1, pts2)
levelplot(r.stack) +
layer(sp.points(pts[[panel.number()]],
pch=20, cex=0.1, col="black"))