如何使用pcolormesh为矩阵M指定区间值设置自定义颜色?
解决方案
你可以通过修改colormap的超出范围颜色(over/under)配合vmin和vmax参数实现需求,无需修改原始矩阵数据,步骤如下:
方法说明
- 复制
twilight色图,避免修改全局默认色图 - 为色图设置
under(小于阈值的颜色)和over(大于阈值的颜色) - 在
pcolormesh中指定vmin=2和vmax=8,定义twilight色图的有效映射范围,超出范围的值会自动使用预设的特殊颜色
完整代码示例
import matplotlib.pyplot as plt import numpy as np # 生成0-10之间的示例矩阵(替换成你的矩阵M即可) M = np.random.uniform(0, 10, (10, 10)) # 复制twilight色图并配置特殊颜色 cmap = plt.cm.twilight.copy() cmap.set_under('black') # 所有小于2的值显示为黑色 cmap.set_over('red') # 所有大于8的值显示为红色 # 绘制伪彩图 plt.pcolormesh(M, shading='auto', cmap=cmap, vmin=2, vmax=8) # 颜色条添加扩展标记,直观显示超出范围的颜色 plt.colorbar(extend='both') plt.show()
补充说明
- 如果需要保留原始矩阵的数值信息(比如后续计算),这种方法比修改矩阵本身更友好
extend='both'会在颜色条的上下两端添加小三角,明确标记超出范围的颜色对应关系- 若要自定义更复杂的颜色规则,可以结合
numpy的掩码操作生成新矩阵,再配合自定义色图,但上述方法是最简洁的实现方式
内容的提问来源于stack exchange,提问作者Francis1984
相关产品推荐
相关产品推荐

