1

我有一个栅格,我想用image(). 到目前为止,我用自己的色标绘制了栅格col

## read the libraries
library(raster)
library(fields)
library(grDevices)


##random raster object
set.seed(1)
r <- raster(ncol=5, nrow=5)
r[] <- rnorm(n=ncell(r),mean=2)

col = colorRampPalette(c("darkred","red","lightskyblue","blue","blue4"))(20)
image(r, xaxs="i", yaxs="i", col= rev(col))

这看起来像

图片.

现在,我想将所有高于值 2 的值绘制为“深红色”(我的色标中的初始颜色)

我找到了一个类似的帖子并尝试了相同的

zlim=2
newcol = ifelse(raster(r) >= zlim,"darkred",col)
image(r, xaxs="i", yaxs="i", col= newcol)

但是,我收到了一些错误消息。如果有人可以帮助我,那将很有帮助。

4

1 回答 1

0

嗯...除非您真的了解col工作原理,否则我不会像您尝试那样开始使用它(您实际上打算更改使用的色标,并且最终可能会产生非预期的结果)。

顺便说一句,您的错误可能来自使用raster(r) >= zlim而不是r[] >= zlim(但如前所述,即使对此进行了更正,您的结果也不会正确)。

我似乎更容易和更透明地在初始add=True栅格(使其可见,但您可以调整)和其他地方的 NA(以便原始栅格通过透明度可见):

library(raster)

# Your example
set.seed(1)
r <- raster(ncol=5, nrow=5)
r[] <- rnorm(n=ncell(r),mean=2)
col = colorRampPalette(c("darkred","red","lightskyblue","blue","blue4"))(20)
par(mfrow = c(1,2))
image(r, xaxs="i", yaxs="i", col= rev(col), main='Original')

# build a new raster with 1 where r>=2 and NA elsewhere
newr = r
newr[] = ifelse(newr[] >= 2, 1, NA)
image(r, xaxs="i", yaxs="i", col= rev(col), main='Vals >=2 in yellow')
image(newr, col= "yellow", add=T)

在此处输入图像描述

于 2018-08-23T12:32:04.543 回答