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

Pyplot使用TwoSlopeNorm与LinearSegmentedColormap时零值设蓝色失效问题

你只需要在原有绘图代码中添加一行y轴翻转的代码即可实现预期效果,修改后的绘图部分代码如下:

# plot
f,a = plt.subplots()
raster = a.pcolormesh(data,cmap=cmap, norm=divnorm)
# 新增这行翻转y轴,匹配数组行顺序和视觉上下顺序
a.invert_yaxis()
cbar = f.colorbar(raster,ax=a, extend='both')
plt.show()

原因说明

  • 你当前的set_under配置本身是正确的:TwoSlopeNorm的vmin=1,所有小于1的数值(包括你设置的0、-1)都会触发set_under指定的蓝色样式,nan值也会正常显示为你设置的中春绿色。
  • 未达到预期是因为matplotlib的pcolormesh默认将二维数组的第0行渲染在图表最顶部,数组的最后一行渲染在图表最底部,所以你预期放在底部的全0首行跑到了顶部,两个蓝色方块也出现在了图表下半区域。
  • 翻转y轴后,数组的第0行对应图表最底部,数组行索引越大对应图表位置越靠上,刚好匹配你要的效果:底部出现全蓝线条,上半区域出现两个蓝色方块,中上部的nan值显示为绿色。

如果遇到色块边界模糊的情况,可以在pcolormesh的参数中增加shading='nearest'即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:54:03