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

Python matplotlib绘图xticklabels与实际x轴刻度不重合问题咨询

问题原因

  • 调用set_xticklabels()方法前没有显式指定x轴刻度的位置:matplotlib会默认根据x轴数值范围生成均匀分布的刻度,此时直接传入自定义标签,只会按顺序给默认的均匀刻度分配标签,自然无法和你存储真实x坐标的listOfSteps1的位置一一对应。
  • listOfSteps1本身是不均匀的数值序列,和matplotlib默认生成的均匀刻度位置完全不匹配,进一步加剧了错位。

解决方案

先调用ax.set_xticks()指定刻度位置为listOfSteps1,再调用set_xticklabels()设置对应标签即可,修正后的完整代码如下:

import matplotlib.pyplot as plt

A=[0.4533333333333333,
 0.6033333333333334,
 0.7033333333333335,
 0.59,
 0.49666666666666665,
 0.49666666666666665,
 0.4166666666666667,
 0.7600000000000001]

EB_A =[0.04800000000000001,
 0.06497800193279869,
 0.06003509868180174,
 0.05379449471770337,
 0.055139672522411476,
 0.06977298499632904,
 0.06328550572939434,
 0.04762818959864468]

currentNamesList = ['0','4h','6h','16h','24h','48h','4d','6d']
listOfSteps1=[0,4,6,16,24,48,96,144]
fig, ax = plt.subplots()
ax.plot(listOfSteps1, A,label= 'ATRA')
ax.errorbar(listOfSteps1, A, yerr = EB_A)
plt.xlabel('Time',fontsize=12)
plt.ylabel('Average Correlation' , fontsize=12)
# 先显式指定刻度位置和自定义坐标对应
ax.set_xticks(listOfSteps1)
ax.set_xticklabels(currentNamesList)
plt.legend(loc= 'upper left')
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:18:02