matplotlib 如何在两个刻度线的中心设置颜色条标签文本?

iqxoj9l9  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(83)

我正在做一个项目,涉及使用Python中的Matplotlib为图像创建颜色条。我使用以下代码成功地生成了colorbar:

import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()

im = ax.imshow([[1, 2], [3, 4]])

cbar = fig.colorbar(im, orientation='horizontal')
ticks = np.arange(1, 5)
cbar.set_ticks(ticks)
cbar.set_ticklabels(['text 1', 'text 2', 'text 3', 'text4'])

plt.show()

字符串
但是,我想自定义颜色条,使标签文本显示在两个刻度线的中心,而不是在它们的下方。当前,文本位于刻度线下方。有没有办法在Matplotlib中实现这一点?


的数据
我期待的是...


toiithl6

toiithl61#

您可以尝试以下操作:

cbar.set_ticklabels([])
for tick, label in zip(cbar.get_ticks(), ['text 1', 'text 2', 'text 3', 'text 4']):
    cbar.ax.text(tick, 0.5, label, ha='center', va='center')

字符串
输出:

编辑:

通过计算两个循环之间的中点,可以实现编辑更改和输出。请尝试以下操作:

cbar.set_ticklabels([])
for i in range(len(ticks)-1):
    tick = (ticks[i] + ticks[i+1]) / 2  
    label = 'text {}'.format(i+1)
    cbar.ax.text(tick, -0.5, label, ha='center', va='top')


输出:

相关问题