我有使用R中的raster
包生成的raster
映射。可以使用rasterVis
包的levelplot
函数将这些栅格图层可视化:
levelplot(rasterstack, layout=c(1, 2),
col.regions=colorRampPalette(c('darkred', 'red3', 'orange2', 'orange',
'yellow', 'lightskyblue', 'steelblue3',
'royalblue3', 'darkblue')))
现在,我想将xy坐标定义的一些z值添加到级别图映射中。包含z值的数据框有4列。第1列和第2列包含x和y坐标,第3列包含layout(1、1)中的 map 1的z值,而对于layout(1,2)则包含第4列。
应该添加每个 map 的点,以便如果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)
}
)
我尝试了许多其他选择,但是这些点与通过
levelplot
生成的 map 不对齐。
最佳答案
layer
为此非常方便:
library(raster)
library(rasterVis)
library(sp)
s <- stack(replicate(2, raster(matrix(runif(100), 10))))
xy <- data.frame(coordinates(sampleRandom(s, 10, sp=TRUE)),
z1=runif(10), z2=runif(10))
coordinates(xy) <- ~x+y
levelplot(s, margin=FALSE, at=seq(0, 1, 0.05)) +
layer(sp.points(xy, pch=ifelse(xy$z1 < 0.5, 2, 3), cex=2, col=1), columns=1) +
layer(sp.points(xy, pch=ifelse(xy$z2 < 0.5, 2, 3), cex=2, col=1), columns=2)
请注意,columns
的layer
参数(也存在rows
)指定要将图层添加到的面板。
关于r - 将XY点添加到由levelplot生成的栅格 map 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28597149/