设置datetime格式后Matplotlib图表X轴时间为何发生变化?
时间序列图表X轴时间显示异常原因解析
核心原因
你遇到的问题本质是pandas自动时间轴处理和matplotlib手动格式化的逻辑不匹配:
- 最初用
lgt_num.plot()时,pandas会根据你的30分钟聚合时间索引,自动适配X轴的刻度定位和显示格式,确保刻度精准对齐每一个30分钟的时间点,所以显示正常。 - 当手动添加
mdates.DateFormatter时,只定义了时间的显示样式,但没有指定对应的刻度定位器(Locator)。matplotlib会启用默认的时间刻度逻辑,它无法识别你数据的30分钟间隔,会自动选择其他时间点(比如整点)作为刻度,再用你指定的格式显示这些非原数据的时间,看起来就像是X轴时间数值发生了变化。
修复方法
要让时间显示正常,需要同步设置匹配数据间隔的刻度定位器,指定30分钟的间隔:
import matplotlib.dates as mdates # 先设置刻度定位器,对齐30分钟间隔的时间点 ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=30)) # 再设置时间显示格式 ax.xaxis.set_major_formatter(mdates.DateFormatter('%y.%m.%d.%R'))
另外注意你提供的格式化代码末尾少了一个右括号,实际运行会触发语法错误,需要补上。
内容的提问来源于stack exchange,提问作者Jeriko
相关产品推荐
相关产品推荐

