如何将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
相关产品推荐
相关产品推荐

