Matplotlib时间序列历史与预测绘图x轴右移1个月问题排查
异常原因
- 你使用
pd.date_range指定freq='M'生成的是每月最后一天的时间戳,比如第一个索引值是2020-01-31而非你预期的2020-01-01 matplotlib.dates.MonthLocator默认会把刻度定位到每月第一天,数据点全落在对应月份刻度的右侧,视觉上就呈现出整体右偏一个月的效果。
修复方案
两种方案二选一即可:
方案1:调整时间索引为每月第一天(更符合初始时间范围需求)
把生成索引的代码中freq='M'改为freq='MS',MS是pandas内置的「每月起始日」频率标识,生成的索引会和默认的月刻度位置完全匹配。
修正后的索引生成代码:
# 注意原代码漏了numpy导入,使用np前需要补充 import numpy as np index = pd.date_range(start='2020-01-01', end='2021-12-31', freq='MS')
方案2:调整月刻度定位规则适配月底索引
如果你需要保留每月最后一天的索引,修改MonthLocator的参数,指定刻度落在每月最后一天即可:
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=1, bymonthday=-1))
内容的提问来源于stack exchange,提问作者Abdullah Al Imran
相关产品推荐
相关产品推荐

