You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Matplotlib色条的标签文本置于两个刻度标记中间?

如何将Matplotlib色条标签移至刻度中间?

可以实现这个需求,只需调整色条标签的位置,让它们对应到两个刻度的中间值即可,以下是修改后的代码和说明:

原代码

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()

修改后的实现代码

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)
# 计算两个相邻刻度的中间位置
mid_ticks = (ticks[:-1] + ticks[1:]) / 2
# 将标签绑定到中间位置(使用次要刻度)
cbar.ax.set_xticks(mid_ticks, minor=True)
cbar.ax.set_xticklabels(['text 1', 'text 2', 'text 3'], minor=True)
# 隐藏原来的主刻度标签
cbar.ax.tick_params(axis='x', which='major', labelbottom=False)

plt.show()

关键逻辑说明

  • 保留原ticks作为主刻度,确保刻度线仍显示在原始位置
  • 通过(ticks[:-1] + ticks[1:])/2计算出每两个相邻刻度的中间值,作为标签的新位置
  • 使用次要刻度(minor=True)来放置标签,避免覆盖主刻度的设置
  • 最后隐藏主刻度的标签,只显示中间位置的自定义标签

内容的提问来源于stack exchange,提问作者Rony Golder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 15:55:03