如何在图中标记栅格值?

时间:2014-01-09 20:21:06

标签: r r-raster

如何在图中添加像素值?我可以使用click()获取值,但我希望它出现在图中。

library(raster)
r <- raster(nrow=3, ncol=3)
r[] <- 1:ncell(r)
plot(r)
click(r) 

enter image description here

3 个答案:

答案 0 :(得分:4)

尝试以下内容,该内容基于从返回的函数拼凑而成的部分 getMethod("click", signature="Raster")

myClick <- function(x, n = Inf, id = FALSE, xy = FALSE, cell = FALSE, 
                    type = "n", show = TRUE, ...) {
    i <- 0
    n <- max(n, 1)
    while (i < n) {
        i <- i + 1
        loc <- locator(1, type, ...)
        xyCoords <- cbind(x = loc$x, y = loc$y)
        cells <- na.omit(cellFromXY(x, xyCoords))
        if (length(cells) == 0)
              break
        value <- extract(x, cells)
        text(xyCoords, labels = value)
    }
}

## Try it out
myClick(r, n=4)

答案 1 :(得分:1)

如果要显示所有值,可以使用text方法:

library(raster)
r <- raster(nrow=3, ncol=3, vals=1:9)
plot(r)
text(r)

对于子集,您可以执行以下操作:

z <- rasterToPoints(r, function(x) x > 6 )
plot(r)
text(z[,1], z[,2], z[,3])

答案 2 :(得分:0)

我知道这个问题已经标记为已回答,但是基于Josh的解决方案和Eddie的后续问题,这里有一个小的for循环,可以完成Eddie的要求(绘制没有十进制数的栅格值而不使用{ {1}}):

click