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

Posted

技术标签:

【中文标题】Matplotlib 颜色条未显示 2 个离散值的标签【英文标题】:Matplotlib colorbar not showing labels for 2 discrete values 【发布时间】:2021-10-24 21:03:57 【问题描述】:

有了一个包含 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 个值的颜色条具有刻度线和标签?

【问题讨论】:

我试过你的代码,它确实显示给我,也许你的无花果尺寸很小,数字被切断了 【参考方案1】:

您的代码对我来说很好用:

我正在使用 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

【讨论】:

就是这样。将 matplotlib 从 3.1.1 升级到 3.4.3 修复了它。谢谢! 在最后的代码中,您可以使用cbar.set_ticks([0.25, 0.75])cbar.set_ticklabels([0, 1]) 来获取类似于3-label 示例的标签。 (另请注意,您不再需要 cbar.ax.get_yaxis() 部分)。

以上是关于Matplotlib 颜色条未显示 2 个离散值的标签的主要内容,如果未能解决你的问题,请参考以下文章

使用 Matplotlib 以图例样式绘制离散颜色条

如何使用 Plotly 创建具有 n 个颜色的离散颜色图

如何在给定值列表和matplotlib中十六进制值的相应键的情况下制作颜色条?

matplotlib 中的 3D 离散热图

Python matplotlib更改超出颜色条范围的值的默认颜色

matplotlib:同一张图上有2个不同的图例