【问题标题】:Matplotlib colorbar not showing labels for 2 discrete valuesMatplotlib 颜色条未显示 2 个离散值的标签
【发布时间】: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 个值的颜色条具有刻度线和标签?

【问题讨论】:

  • 我试过你的代码,它确实显示给我,也许你的无花果尺寸很小,数字被切断了

标签: python matplotlib plot legend imshow


【解决方案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() 部分)。
猜你喜欢
  • 2015-03-21
  • 2019-08-08
  • 1970-01-01
  • 2014-12-20
  • 2019-04-21
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 2019-10-20
相关资源
最近更新 更多