Matplotlib colorbar 不绘制四肢边缘

Matplotlib colorbar does not draw edges at extremities

创建 matplotlib 颜色条时,可以将 drawedges 设置为 True,用黑线分隔颜色条的颜色。但是,当使用 extend='both' 扩展颜色栏时,四肢的黑线不会显示。那是一个错误吗?是否有可能以其他方式绘制这些边缘?

代码如下:

import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt  
from matplotlib.colors import from_levels_and_colors

my_cmap = mpl.cm.viridis
bounds = np.arange(10)
nb_colors = len(bounds) + 1
colors = my_cmap(np.linspace(100, 255, nb_colors).astype(int))
my_cmap, my_norm = from_levels_and_colors(bounds, colors, extend='both')

plt.figure(figsize=(5, 1))
ax = plt.subplot(111)
cbar = mpl.colorbar.ColorbarBase(ax, cmap=my_cmap, norm=my_norm, orientation='horizontal', drawedges=True)
plt.subplots_adjust(left=0.05, bottom=0.4, right=0.95, top=0.9)
plt.show()

及其给出的数字:

我根据你的问题进行了调查,找到了一种方法来更改颜色条的边框和垂直线的颜色。我用它把它们变成红色。我得到的结果是扩展的轮廓是红色的,所以我的猜测是我只是将正常颜色条矩形的短边向左和向右拉。 我发现 this response 很有帮助。

cbar.outline.set_edgecolor('red')
cbar.dividers.set_color('red')

所以我认为唯一的方法是添加垂直线。

import matplotlib as mpl
import numpy as np
import matplotlib.pyplot as plt  
from matplotlib.colors import from_levels_and_colors

my_cmap = mpl.cm.viridis
bounds = np.arange(10)
nb_colors = len(bounds) + 1
colors = my_cmap(np.linspace(100, 255, nb_colors).astype(int))
my_cmap, my_norm = from_levels_and_colors(bounds, colors, extend='both')

plt.figure(figsize=(6, 2))
ax = plt.subplot(111)
cbar = mpl.colorbar.ColorbarBase(ax, cmap=my_cmap, norm=my_norm, orientation='horizontal', drawedges=True)
# update
cbar.outline.set_edgecolor('red')
cbar.dividers.set_color('red')
plt.axvline(max(bounds), color='red', alpha=0.3, linewidth=3.5)
plt.axvline(min(bounds), color='red', alpha=0.3, linewidth=3.5)

plt.subplots_adjust(left=0.05, bottom=0.4, right=0.95, top=0.9)
plt.show()