R 将XY点添加到由levelplot生成的光栅地图
我有R 将XY点添加到由levelplot生成的光栅地图,r,points,levelplot,R,Points,Levelplot,我有光栅地图,这些地图是使用R中的光栅包生成的。这些光栅图层可以使用光栅包的levelplot功能可视化: levelplot(rasterstack, layout=c(1, 2), col.regions=colorRampPalette(c('darkred', 'red3', 'orange2', 'orange', 'yellow', 'lightskyblue', 'steelb
光栅
地图,这些地图是使用R中的光栅
包生成的。这些光栅图层可以使用光栅
包的levelplot
功能可视化:
levelplot(rasterstack, layout=c(1, 2),
col.regions=colorRampPalette(c('darkred', 'red3', 'orange2', 'orange',
'yellow', 'lightskyblue', 'steelblue3',
'royalblue3', 'darkblue')))
现在,我想在levelplot映射中添加一些由xy坐标系定义的z值。包含z值的数据框有4列。第1列和第2列包含x&y坐标,第3列包含布局(1,1)中地图1的z值,第4列包含布局(1,2)中地图1的z值
应添加每个地图的点,以便如果z<0.05,pch=2
,如果z>0.05,pch=3
我已经搜索了web并找到了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
图层生成的贴图不对齐,这非常方便:
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)
库(光栅)
图书馆(拉斯特维斯)
图书馆(sp)
因此,我有一个包含xy cordinate和许多z列的数据帧。这是通过@jbaums将积分添加到我的地图的最终答案:
s <- stack(raster1,raster2)
coordinates(SITES...TTEST) <- ~x+y # SpatialPointsDataFrame
levelplot(s, layout=c(1, 2),
col.regions=colorRampPalette(c("darkred", "red3",
"orange", "yellow", "lightskyblue", "royalblue3",
"darkblue")),
at=seq(floor(39.15945) ,ceiling(51.85068), length.out=30),
par.strip.text=list(cex=0),scales=list(alternating=FALSE))+
layer(sp.points(SITES...TTEST, pch=ifelse(SITES...TTEST$Precip_DJF6 < 0.05, 2, 3), cex=2, col=1), rows=1) +
layer(sp.points(SITES...TTEST, pch=ifelse(SITES...TTEST$Precip_DJF6 < 0.05, 2, 3), cex=2, col=1), rows=2)
s太完美了!你刚刚为我节省了全世界的时间。现在它应该又能工作了@JerryN。谢谢你的提醒。