使用ListedColormap时如何指定扩展三角形的颜色

How to specify color of extension triangle when using ListedColormap

提供了如何使用 ListedColormap 创建颜色图的示例。

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)

我知道我可以只使用 tab20c 颜色映射而不是 ListedColormap 在这里显示的这个特殊情况,但在那个答案中讨论的更复杂的例子需要 ListedColormap。我避免了这种并发症,因为它不是这个问题的重点。使用 newcmp 绘制函数:

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')

我可以在 colorbar 调用中使用 extend='min' kwarg 向下扩展颜色条。

我想修改颜色条底部三角形的颜色。为了做到这一点,比方说,黄色,我用 tab20c = cm.get_cmap('tab20c', 256).with_extremes(under='yellow') 尝试了上面的代码,但三角形仍然是蓝色的。我读过 .with_extremes() here.


问题

不改变其余部分,如何设置颜色条下方三角形的颜色?


我希望有涉及这 3 行的解决方案:

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

因为它们对于自定义颜色条很重要,适用于此处介绍的更复杂的情况。

您正在寻找 .set_under() 方法。例如:

tab20c = cm.get_cmap('tab20c', 256)
newcolors = tab20c(np.linspace(0, 1, 256))
newcmp = ListedColormap(newcolors)
newcmp.set_under('k')

会导致这张图片: