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

Matplotlib绘图时X轴刻度除以10后全部向0偏移问题求解

问题原因

你混淆了set_xticks()和set_xticklabels()两个方法的作用:

  • set_xticks()接收的参数是绘图数据在X轴上的实际坐标位置,你最初绘图时X轴传入的是np.arange(1001)也就是01000的原始序列,所以刻度的实际位置必须对应这些原始值,不能直接改成除以10之后的数,不然就相当于把刻度放在了X轴0100的位置,自然会全部往0偏移挤在一起。
  • 你要修改的只是刻度显示的文本标签,不是刻度的实际位置,应该用set_xticklabels()方法实现。

正确修改方案

保留原来的刻度位置设置,只把显示的标签做除以10的转换即可:

index_time = len(df.index)
ax.plot(np.arange(index_time), df["SoluteHBonds"], color="blue")
# 刻度实际位置保持原来的0、50、100...1000,和绘图的X坐标范围匹配
ranges = np.arange(0, index_time, 50)
ax.set_xticks(ranges) 
# 仅修改刻度显示的文本,做除以10的转换
ax.set_xticklabels(ranges / 10)

之前修改失效的具体逻辑

  • 第一次你把np.true_divide(ranges, 10)传给了set_xticks(),相当于把刻度放在了X轴0、5、10...100的位置,而你的图X轴实际范围是0~1000,所以所有刻度都堆在最左边1/10的区域,就是你观察到的向0偏移。
  • 第二次你生成的lst_range是0、5、10...100,除以10之后变成0、0.5、1...10,传给set_xticks()之后刻度全挤在X轴最左侧0~10的位置,偏移更严重。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 04:54:01