gpt4 book ai didi

python - 获取 matplotlib colorbar tick outside data limits 与 boundaries 关键字一起使用

转载 作者:太空狗 更新时间:2023-10-30 02:12:55 25 4
gpt4 key购买 nike

我正在尝试使用颜色条来标记使用 imshow 绘制的离散编码值。我可以使用 boundariesvalues 关键字实现我想要的颜色条,这使得颜色条的最大值实际上比所绘制数据的最大值大 1。

现在我希望刻度位于颜色条中每个颜色范围的中间,但无法为颜色条中最大的色 block 指定刻度位置,似乎是因为它超出了数据值限制。

下面是演示问题的快速代码块:

data = np.tile(np.arange(4), 2)
fig = plt.figure()
ax = fig.add_subplot(121)
ax.imshow(data[None], aspect='auto')
cax = fig.add_subplot(122)
cbar = fig.colorbar(ax.images[0], cax=cax, boundaries=[0,1,2,3,4], values=[0,1,2,3])
cbar.set_ticks([.5, 1.5, 2.5, 3.5])
cbar.set_ticklabels(['one', 'two', 'three', 'four'])

请注意“四”所在位置缺少的勾号。执行此操作的正确方法是什么?

最佳答案

总而言之,这对我有用:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib import cm
from matplotlib import colors

data = np.tile(np.arange(4), 2)
fig = plt.figure()
ax = fig.add_subplot(121)
cmap = cm.get_cmap('jet', 4)
bounds = np.arange(5)
vals = bounds[:-1]
norm = colors.BoundaryNorm(bounds, cmap.N)
ax.imshow(data[None], aspect='auto', interpolation='nearest', cmap=cmap, norm=norm)

cax = fig.add_subplot(122)
cbar = fig.colorbar(ax.images[0], cax=cax, boundaries=bounds, values=vals)
cbar.set_ticks(vals + .5)
cbar.set_ticklabels(['one', 'two', 'three', 'four'])

解决方案是使用 get_cmap 明确指定图像的颜色图,并以 BoundaryNorm 为界。然后指定刻度位置就可以了。结果图是:

discrete colorbar example

关于python - 获取 matplotlib colorbar tick outside data limits 与 boundaries 关键字一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12570627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com