如何将栅格图层值1设为白色,实现偏离1的渐变对比配色?
栅格图层配色优化求助
我尝试绘制栅格图层,希望将值1设置为白色。参考诸多示例后仍无法实现理想配色:要求低于1和高于1的值使用对比色,色调随与1的距离增加而加深。目前已基于模拟数据生成效果不佳的图,无法提供真实数据,优先希望使用viridis配色方案。
断点与配色思路参考了GIS社区相关帖子,shapefile取自国家行政边界数据网站。以下是示例代码:
library(rgdal) library(raster) library(sp) library(sf) set.seed(123) proj = " +units=km +proj=utm +zone=37 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +no_defs" map0 = readOGR(dsn = "dataFiles/gadm40_NGA_shp", # 尼日利亚行政边界数据 layer = "gadm40_NGA_0") map0_trnsfrmd = spTransform(map0,proj) predRaster <- raster(ncol=400, nrow=400, xmn=-3805.7869, xmx=-2222.120, ymn=562.5405, ymx=1828.165) res(predRaster) = 5 projection(predRaster) = " +units=km +proj=utm +zone=37 +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,0 +no_defs" idx = 1:80201 # index for the cell numbers val = c(rnorm(50000), rep(1,10201),runif(20000,min=0, max=3)) r = setValues(predRaster, values = val, index=idx) # assign values to the cells r = raster::mask(crop(r, extent(map0_trnsfrmd)), map0_trnsfrmd, snap = 'out') below=val[val<1] above=val[val>1] min(below) [1] -4.289319 max(above) [1] 4.438207 max(below) [1] 0.9998253 min(above) [1] 1.000105 breakpoints = c(-4.289319, 0.9998253, 1.000105, 4.438207) colors = c("red","white","blue") par(mgp=c(4,1,0), mar=c(5,7,3,1)+0.1) plot(r,las=1, asp = 1, xlab="Easting", ylab="Northing", axis.args = list(cex.axis=1), legend.shrink =1,legend.width=2, cex.lab=2, cex.axis=1.5, legend.args = list("title", cex =1),breaks=breakpoints,col=colors)
当前效果图:
恳请各位提供可行建议。
内容的提问来源于stack exchange,提问作者user18118777
相关产品推荐
相关产品推荐

