栅格中超出范围的色标图

时间:2018-08-16 11:07:19

标签: r plot colors r-raster rastervis

我有一个栅格,我想用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))

这看起来像

image

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

我找到了similar post并尝试了

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

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

1 个答案:

答案 0 :(得分:0)

嗯...除非您真的了解how col works,否则我不会在尝试时开始使用它(您实际上打算更改您使用的色标,并且可能最终会出现意想不到的情况)结果)。

顺便说一句,您的错误可能是由于使用raster(r) >= zlim而不是r[] >= zlim(但如上所述,即使更正了,您的结果也不正确)。

我似乎更容易和更透明地选择在初始值(add=True)之上绘制一个新栅格,并在阈值之上(此处为1,其中栅格> = 2)之上使用单个值,定义的颜色(此处为黄色,使其可见但您可以进行调整),以及在其他位置均不适用(以使透明可见原始栅格):

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)

enter image description here