我在R中创建了一个具有正值和负值的空间栅格。我希望所有正值都是红色渐变,而所有负值都是蓝色渐变。基本上我想定义我自己的颜色渐变,零为空白,正值为红色,负值为蓝色(这些可以是任何颜色)。 R中的大多数颜色渐变在最小值之间传播所有可用颜色。最多值。
我似乎无法找到解决方案,所以希望有人在这里有建议。
以下是一个值为-5到5的栅格的示例,我需要一个“新的”col定义:
library(raster)
set.seed(9)
r <- raster(ncol=10, nrow=10)
r1 <- setValues(r, (1:ncell(r))/10 + rnorm(ncell(r)) - 5)
plot(r1, col= topo.colors(12))
最佳 - 尼尔斯
答案 0 :(得分:0)
我找不到比添加公差更优雅的方式,因为如果你有更优雅的方式,颜色应该被赋予一个段而不是一个点(例如0),请继续
library(raster)
set.seed(9)
r <- raster(ncol=10, nrow=10)
r1 <- setValues(r, (1:ncell(r))/10 + rnorm(ncell(r)) - 5)
tol=10^-12
breakpoints <- c(min(as.data.frame(r1)),0-tol,0+tol,max(as.data.frame(r1)))
colors <- c("blue","white","red")
r1.range <- c(minValue(r1), maxValue(r1))
plot(r1,breaks=breakpoints,col=colors, axis.args=list(at=c(r1.range[1], 0,r1.range[2])))
仅需要axis.args
参数使图例看起来不错,如果它看起来很可怕,你可以把它带走。
来源:
https://gis.stackexchange.com/questions/17339/raster-legend-in-r-how-to-colour-specific-values
应该解决你的问题。