【问题标题】:How to plot out of bound raster color scale with a specific color in image R?如何在图像 R 中使用特定颜色绘制超出边界的光栅色阶?
【发布时间】:2019-01-23 10:16:12
【问题描述】:

我有一个光栅,我想在图像图中用特定颜色绘制超出界限的颜色。我到目前为止的代码

## 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)

par(mfrow=c(2,1))
col = colorRampPalette(c("darkred","red","lightskyblue","blue","blue4"))(20)
##plot without any z limit
image(r, xaxs="i", yaxs="i", col= rev(col))
##plot with z limit
image(r, xaxs="i", yaxs="i", col= rev(col),zlim = c(min(r@data@values),2))

看起来像这样

第一个图是没有指定任何限制的正常图像图,第二个图有一些限制条件。 我想用调色板的第一种颜色(“darkred”)更改我的第二个图中的白色(超出界限值,即高于 2 的光栅值)。

谢谢。

【问题讨论】:

    标签: r plot r-raster rastervis


    【解决方案1】:

    您可以通过image 函数使用自定义分隔符来设置最高显示颜色组的范围。

    set.seed(1)
    r <- raster(ncol=5, nrow=5)
    r[] <- rnorm(n=ncell(r),mean=2)
    par(mfrow=c(2,1))
    col = colorRampPalette(c("darkred","red","lightskyblue","blue","blue4"))(20)
    col = rev(col)
    
    image(r, xaxs="i", yaxs="i", col = col, main="Initial")
    
    breaks = seq(r@data@min, r@data@max, length.out=21)    
    col[which(breaks[1:20] >= 2)] = col[20]
    image(r, xaxs="i", yaxs="i", col = col, breaks=breaks, main="Z-Limit")
    

    【讨论】:

    • 感谢您的解决方案。可能是我没有以正确的方式提出问题。当您使用中断时,绘图的比例也会改变par(mfrow=c(2,1)); ##without any z limit; image(r, xaxs="i", yaxs="i", col= rev(col),main="Initial"); breaks = c(seq(r@data@min, 2, length.out=20), r@data@max); image(r, xaxs="i", yaxs="i", col= rev(col), breaks=breaks,main="JacobF"); 我希望其他一切都相同,除了值大于 zlim 的像素颜色应该是我调色板的第一种颜色(“darkred”)。我希望它现在清楚了。
    • 如果我理解你的问题,修改后的代码应该能满足你的要求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 2018-05-15
    • 2020-05-07
    • 2017-12-17
    • 2021-08-30
    • 2017-07-17
    • 1970-01-01
    相关资源
    最近更新 更多