Matplotlib 颜色条不显示 2 个离散值的标签

Matplotlib colorbar not showing labels for 2 discrete values

有了 3 个离散值的数组,我可以使用 imshow 创建颜色条。

import numpy as np
from matplotlib import pyplot as plt

img_data1 = np.random.choice([0,1,2], size=100).reshape((10,10))

plt.imshow(img_data1)
plt.colorbar(ticks = [0,1,2], values = [0,1,2])

产生:

但如果数组只有 2 个离散值,[0,1],则颜色条标签丢失。

img_data2 = np.random.choice([0,1], size=100).reshape((10,10))

plt.imshow(img_data2)
plt.colorbar(ticks = [0,1], values = [0,1])

产生:

如何使具有 2 个值的颜色条具有刻度线和标签?

你的代码对我来说工作正常:

我正在使用 matplotlib 3.4.2。如果您的软件包不是最新的,请尝试更新它。


在任何情况下,您都可以自定义颜色栏标签:

cbar = plt.colorbar(ticks = [0,1], values = [0,1])
cbar.ax.get_yaxis().set_ticks([0, 0.25, 0.5, 0.75, 1]) # pass the array of labels you want