将XY点添加到levelplot生成的栅格地图

cod*_*123 8 r points levelplot

我有raster使用rasterR中的包生成的映射.这些栅格图层可以使用rasterVis包的levelplot函数可视化:

levelplot(rasterstack, layout=c(1, 2), 
          col.regions=colorRampPalette(c('darkred', 'red3', 'orange2', 'orange', 
                                         'yellow', 'lightskyblue', 'steelblue3', 
                                         'royalblue3', 'darkblue')))
Run Code Online (Sandbox Code Playgroud)

现在,我想将xy cordinates定义的一些z值添加到levelplot映射中.包含z值的数据帧有4列.第1列和第2列包含x和y坐标,第3列包含布局(1,1)中的地图1的z值和布局(1,2)的第4列.

应该添加每个地图的点数,使得如果z <0.05,pch=2并且如果z> 0.05,则pch=3.

我在网上搜索并找到了Ripley的解决方案,但它在我的情况下不起作用:

levelplot(rcp852, xlab = "", ylab = "",
          panel = function(x, y, subscripts, ...) {
            panel.levelplot(x, y, subscripts, ...)
            panel.xyplot(topo$x,topo$y, cex = 0.5, col = 1)
          }
)
Run Code Online (Sandbox Code Playgroud)

我尝试了很多其他选项,但这些点与通过生成的地图不一致levelplot.

jba*_*ums 9

layer 对此非常方便:

s <- stack(replicate(2, raster(matrix(runif(100), 10))))
xy <- data.frame(coordinates(sampleRandom(s, 10, sp=TRUE)),
                z1=runif(10), z2=runif(10))

levelplot(s, margin=FALSE, at=seq(0, 1, 0.05)) + 
  layer(sp.points(xy, pch=ifelse(pts$z1 < 0.5, 2, 3), cex=2, col=1), columns=1) +
  layer(sp.points(xy, pch=ifelse(pts$z2 < 0.5, 2, 3), cex=2, col=1), columns=2)
Run Code Online (Sandbox Code Playgroud)

需要注意的是columns参数layer(rows也存在)指定要添加图层到面板(一个或多个).

在此输入图像描述