gpt4 book ai didi

r - 使用 R 中的 rasterVis 在堆栈中的每一层上绘制特定点数据

转载 作者:行者123 更新时间:2023-12-03 18:27:47 27 4
gpt4 key购买 nike

我有 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 的 levelplot 绘制光栅堆栈。我还想用 pts1 叠加 r1,用 pts2 叠加 r2。

但是,一旦我添加一个点数据集,它就会用于两个层:

levelplot(r.stack) + layer(sp.points(pts1, pch=20, cex=0.1, col="black"))

如何在仍使用栅格堆栈的同时使用具有特定图层的特定点数据集?

我想通过单独绘制每个图层及其特定点数据集然后使用 print.trellis 来避免制作自己的子图。我试过了,但与带有栅格堆栈的 levelplot 相比,结果略逊一筹。

关于如何实现这一点有什么想法吗?

最佳答案

使用 panel.number 函数,您可以根据您所在的面板对数据进行子集化:

pts <- list(pts1, pts2)

levelplot(r.stack) +
layer(sp.points(pts[[panel.number()]],
pch=20, cex=0.1, col="black"))

关于r - 使用 R 中的 rasterVis 在堆栈中的每一层上绘制特定点数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31651694/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com