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

使用ListedColormap时如何设置颜色条扩展三角的颜色

解决方法:直接在自定义的ListedColormap上设置极值颜色

问题的核心在于:你之前是给原tab20c设置了under颜色,但随后创建的newcmp是完全基于提取出的newcolors数组生成的新颜色映射,并没有继承原cmap的极值设置。要让扩展三角显示黄色,需要直接在newcmp上配置under属性——正好可以结合你提到的三行关键代码来实现:

tab20c = cm.get_cmap('tab20c', 256)
newcolors = tab20c(np.linspace(0, 1, 256))
newcmp = ListedColormap(newcolors).with_extremes(under='yellow')

为什么之前的方法不生效?

当你调用tab20c.with_extremes(under='yellow')时,只是给原颜色映射添加了极值配置,但newcolors = tab20c(np.linspace(0, 1, 256))这行代码只提取了原cmap在**常规数值范围(0到1)**内的颜色,并没有包含under对应的特殊颜色。随后用ListedColormap创建的newcmp是一个全新的映射,默认不会继承原cmap的极值设置,所以你的修改没有传递到最终使用的newcmp上。

完整可运行代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.colors import ListedColormap, LinearSegmentedColormap

# 修改后的核心三行代码
tab20c = cm.get_cmap('tab20c', 256)
newcolors = tab20c(np.linspace(0, 1, 256))
newcmp = ListedColormap(newcolors).with_extremes(under='yellow')

# 绘制部分保持不变
mock = np.array([[0.1,0.2,0.3],
                 [0.2,0.3,0.4],
                 [0.3,0.4,0.5],
                 [0.4,0.5,0.6],
                 [0.5,0.6,0.7],
                 [0.6,0.7,0.8],
                 [0.7,0.8,0.9]])
plt.figure(figsize=(6,6))
im = plt.imshow(mock,cmap = newcmp, vmin=0.0, vmax=1)
plt.colorbar(im,extend='min')

plt.show()

运行这段代码后,颜色条底部的扩展三角就会显示为黄色了。如果你需要更灵活的设置(比如用自定义RGB颜色),只需要把'yellow'替换成类似(1, 1, 0)这样的RGB元组即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:28:13