关于r:为多个空间图形绘制相同的图例

Drawing the same legend for the multiple spatial figures

我有一个for循环,可进行插值并按spplot绘制栅格图。
它只给出一个颜色条,但标签在每个图中均会改变。
您可以在下面看到区别。
enter image description here
enter image description here

我想在ssplot中使用带有相同标签的相同颜色条,但无法根据相同的地图图例绘制图形。

这是代码的最后一部分

for (...) {

...

WElev.IDW = idw(公式=变量?1,位置= spdf2,newdata = r.pts)

mypath <-file.path(" C:"," ...",paste(" WElevMonth",colnames(variable)," .png",sep ="))

png(文件名= mypath)

打印(spplot(WElev.IDW [" var1.pred"]))

dev.off()}


stack()您的图,spplot RasterStack

1
2
s <- stack(raster1, raster2)
spplot(s)

由此产生的情节将有一个共同的图例。

如果要使所有图相互独立,但要设置色标的限制和中断,请使用at参数。 向at传递中断向量。 看到这篇文章。

首先,堆叠所有栅格,以便您可以快速计算堆叠的最小值和最大值。 使用这些值可以通知您的图例限制和中断。

1
2
3
4
5
6
7
8
9
10
11
# max and min of the stack
max_r  <- cellStats(s, max) # max of raster stack: legend upper limit
min_r  <- cellStats(s, min) # min of raster Stack: legend lower limit
breaks <- (max_r - min_r)/15 # increase denominator for more breaks
lab    <- seq(min_r, max_r, by = breaks) # create the vector of legend breaks

# now run your for loop and within `spplot`, set the same legend with `at`
for(i in 1:n){
  spplot(raster, at = lab)
  ...
}