You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言空间绘图:将超100的值映射为90-100区间的深绿色

解决空间绘图中超出色阶范围数值的颜色显示问题

问题描述

制作了色阶范围为-100到100的空间绘图,但绘图数据的实际范围是-100到1500,导致数值超过100的区域显示为白色。需要将所有数值超过100的区域统一设置为色阶中90-100区间的深绿色。

解决方案

核心思路是将超出色阶上限的数值钳制到色阶最大值(100),这样这些数值会自动匹配最高色阶区间的颜色,无需调整色阶和颜色映射。

修改后的完整代码

brks <- seq(-100,100,10)
length(brks)
colorscale <- colorRampPalette(brewer.pal(11, "BrBG"))(length(brks)-1)

# 关键修改:将超过100的数值钳制为100
prnew_clamped <- pmin(prnew, 100)

windows()
# 使用钳制后的数据绘图
image.plot(lon,lat,prnew_clamped,col=colorscale,breaks=brks,lab.breaks=brks,
           xaxt="n", yaxt="n", ann=FALSE)
map(database="world", add=TRUE)
# 自定义坐标轴
axis(side=1, at=seq(-180,177.5,20), labels=seq(-180,177.5,20))
axis(side=2, at=seq(-80,80,10), labels=seq(-80,80,10), las=2)

abline(h=seq(-80,80,10), v=seq(-180,177.5,20),lty=2,col="grey",lwd=0.5)
title(main=paste('Relative Bias PR (RCM-EOBS)',SEA[1],'1976-2005',sep=" ")
      ,line=2,cex.lab=1, cex.axis=1.5, cex.main=2, cex.sub=1.5)
mtext("%", side=4, line=2,cex=1.5)

关键修改说明

  • 使用pmin()函数:该函数会逐个比较prnew中的每个元素和100,取较小值作为结果,从而把所有大于100的数值替换为100
  • 保持色阶参数不变:原有的breaks和colorscale无需调整,被钳制到100的数值会自动对应到色阶的最高区间(90-100),也就是需要的深绿色

内容的提问来源于stack exchange,提问作者kettaren ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 08:47:21