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中十六进制值的相应键的情况下制作颜色条?