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

pandas时间序列图添加垂直竖线时竖线超出数据范围如何解决

问题原因
  • 核心原因是pandas绘制时间序列时默认使用自定义的日期刻度转换逻辑,和matplotlib axvline 方法使用的日期数值单位不匹配,你传入的2021-08-23对应的x轴数值不在图表当前的x轴可视范围内,因此竖线显示在图外。
  • 次要可能原因:你设置的date索引实际为object字符串类型,未正确转换为datetime64类型,导致日期匹配失效。
解决方法

第一步:先确认索引类型

执行以下代码验证索引是否为正确的datetime类型:

print(df.index.dtype)

如果输出不是datetime64[ns],先执行索引类型转换:

df.index = pd.to_datetime(df.index)

第二步:修改绘图代码

在df.plot中添加x_compat=True参数,强制pandas使用matplotlib原生日期格式,避免转换不匹配问题,完整代码如下:

ax = df.plot(
    figsize=(12,8), 
    logy=True, 
    title='Random Forest Regressor Performance',
    color={'price': 'blue', 'count': 'orange', 'pred': 'green'},
    x_compat=True
)

ax.axvline(pd.to_datetime('2021-08-23'), color='r', linestyle='--', lw=2)

备用方案

如果上述方法仍不生效,可以直接将日期转换为matplotlib识别的日期数值:

import matplotlib.dates as mdates

ax.axvline(mdates.date2num(pd.to_datetime('2021-08-23')), color='r', linestyle='--', lw=2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:54:02