如何反转R语言image.plot函数色阶 适配SPEI气候数据可视化需求
问题描述
我使用image.plot展示德国的气候指标SPEI数值,所用代码如下:
image.plot(lon.list[[1]], lat.list[[1]], spei3.list[[4]][,,315], main = "SPEI Germany", xlab = "Longitude", ylab = "Latitude", legend.lab = "SPEI", legend.line = 2.5, zlim = c(-3.0,3.0)) plot(sf_object, add = T, border = "Black")
初始输出效果整体符合预期,但需要调整配色:代表干旱的低值显示为红色,代表湿润的高值显示为蓝色,仅反转现有色阶顺序即可。我尝试了多种方法都没有得到满意的结果。
这是一个较为通用的问题,希望可以不用提供示例代码和数据就能得到解决方案。
中间踩坑
按照其他用户给出的方案修改后,色板整体发生了变化,并不是仅反转了原有色阶的顺序,不符合需求。
最终解决方案
可以自定义配色方案,也可以借助RColorBrewer、randomcoloR等第三方包提取所需的颜色编码组成向量,将该向量传入image.plot的col参数即可,如果需要反转色序,直接对颜色向量调用rev()函数即可。
参考实现代码如下:
# set the color palette SPI.col <- c("#0000FFFF", "#0066FFFF", "#00CCFFFF", "#00FFCCFF", "#00FF00FF", "#FF6600FF", "#FF0000FF") image.plot(lon.list[[1]], lat.list[[1]], Index.list[[1]][[1]][,,211], main = paste0(Indices[1], "-3 Germany ", models[1]), col = rev(SPI.col), xlab = "Longitude", ylab = "Latitude", legend.lab = "SPEI", legend.line = 2.5, zlim = c(-3.0,3.0)) plot(sf_object, add = T, border = "Black")
修改后最终输出效果符合预期。
内容的提问来源于stack exchange,提问作者climsaver
相关产品推荐
相关产品推荐

