绘制整个栅格堆栈时添加栅格值

Adding raster values when plotting a whole raster stack

如何在使用 text() 绘制整个栅格堆栈时添加栅格值?它可以在绘制单个栅格时轻松管理,但我很困惑如何为整个栅格堆栈做到这一点。

示例数据:

set.seed(123)
library(raster)
r1 <- raster(nrows = 1, ncols = 1, res = 0.5, xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5, vals = 0.3)
rr <- lapply(1:10, function(i) setValues(r1,seq(1,ncell(r1),1)))
s <- stack(rr)

单个栅格如下:

plot(s[[1]])
text(s[[1]])

您可以调整图形参数 par 并遍历图层进行绘图,而不是在整个堆栈上使用 plot

set.seed(123)
library(raster)
r1 <- raster(nrows = 1, ncols = 1, res = 0.5, xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5, vals = 0.3)
rr <- lapply(1:10, function(i) setValues(r1,seq(1,ncell(r1),1)))
s <- stack(rr)

# 3 rows, 4 columns
par(mfrow=c(3,4))

for (ii in 1:nlayers(s)){

  plot(s[[ii]])
  text(s[[ii]])

}

示例数据

set.seed(123)
library(raster)
r1 <- raster(nrows = 1, ncols = 1, res = 0.5, xmn = -1.5, xmx = 1.5, ymn = -1.5, ymx = 1.5, vals = 0.3)
rr <- lapply(1:10, function(i) setValues(r1, sample(ncell(r1))))
s <- stack(rr)

简单的方法

par(mfrow=c(3,4))
for (i in 1:nlayers(s)) {
    plot(s[[i]])
    text(s[[i]])
}

更高级,但更棘手。它使用一个全局变量 i,每次使用它之前必须将其重置为 1 plot

f <- function() {  text(s[[i]]); i <<- i + 1 }
i <- 1
plot(s, addfun=f)