You need to enable JavaScript to run this app. 如何在matplotlib.pyplot中创建自定义N色cmap并避免颜色重复问题
优惠活动
大模型
产品
解决方案
定价
更多

如何在matplotlib.pyplot中创建自定义N色cmap并避免颜色重复问题

问题原因

仅通过ListedColormap定义颜色列表时,Matplotlib默认会对数据值域做线性插值映射,若未绑定颜色与数值的对应规则,就会出现颜色重复、插值变色的问题。

你遇到的异常绘图效果如下:
绘图效果

解决方案

搭配BoundaryNorm手动指定数值区间和颜色的一一对应关系,即可强制色卡严格按照定义的颜色显示,不做插值处理:

  • 二分类离散数据场景:如果你的数据是仅包含0、1两类的离散值,参考代码如下:
import matplotlib.pyplot as plt
from matplotlib import colors
import numpy as np

# 定义自定义色卡
cmap = colors.ListedColormap(['#e3eeee', '#3c0736'])
# 绑定数值与颜色的对应规则:[-0.5, 0.5]匹配第一个颜色,[0.5, 1.5]匹配第二个颜色
bounds = [-0.5, 0.5, 1.5]
norm = colors.BoundaryNorm(bounds, cmap.N)

# 绘图示例
test_data = np.random.randint(0, 2, size=(10,10))
plt.imshow(test_data, cmap=cmap, norm=norm)
plt.colorbar(ticks=[0,1])
plt.show()
  • 连续数据按阈值分色场景:如果你的数据是连续值,仅需修改bounds中的分界值即可,比如要以数值5为分界,小于5用第一个颜色、大于等于5用第二个颜色,将bounds修改为[test_data.min(), 5, test_data.max()]即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 07:42:04