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

如何使用非均匀浮点列表设置matplotlib等间距x轴刻度标签

问题原因

使用imshow绘制矩阵时,x轴默认的坐标范围对应矩阵的列索引,5×20矩阵的x轴坐标范围为[-0.5, 19.5]。原代码仅通过MaxNLocator指定刻度数量,未关联刻度位置和标签的对应关系,导致标签和实际生成的刻度位置错位,出现标签丢失、顺序错误的问题。


修正代码

如果你的需求是x轴显示4个等间距刻度,依次对应指定标签,可直接先设置刻度位置再关联标签,无需使用MaxNLocator:

import numpy as np
import matplotlib.pyplot as plt

M = np.random.rand(5, 20)

fig, ax = plt.subplots()
pos = ax.imshow(M, aspect='auto', cmap='jet')
fig.colorbar(pos, ax=ax)

labels = [1.2, 2.3, 4.7, 8.3]
# 生成4个覆盖整个x轴范围的等间距刻度位置
ax.set_xticks(np.linspace(0, M.shape[1]-1, len(labels)))
# 绑定对应标签
ax.set_xticklabels(labels)

plt.show()

可选扩展

如果你需要刻度位置和标签数值的实际分布成正比(即刻度间距与1.2、2.3等数值的差值匹配,非等间距刻度),可使用如下配置:

labels = [1.2, 2.3, 4.7, 8.3]
# 先将x轴范围映射到标签的数值范围
ax.set_xlim(labels[0], labels[-1])
# 直接在对应数值位置设置刻度
ax.set_xticks(labels)
ax.set_xticklabels(labels)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:30:00