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

求助:Pandas中ts.plot()绘图x轴无法显示实际日期

解决Pandas时间序列图X轴不显示实际日期的问题

你的问题大概率是因为时间序列索引的类型不对,或者matplotlib的日期显示配置没跟上,下面给你分步解决的方案:

1. 先确认索引是datetime类型

首先检查你的ts索引的类型,有时候看起来是日期格式,但实际是字符串类型,Pandas没法把它识别为时间轴:

print(ts.index.dtype)

如果输出不是datetime64[ns],就把索引转换成datetime类型:

# 转换索引为datetime格式
ts.index = pd.to_datetime(ts.index)

要是你原始的df里的日期列本身就是字符串,也可以在创建Series的时候直接处理:

ts = pd.Series(df['res'], index=pd.to_datetime(df['Date']))

2. 调整matplotlib的日期显示设置

即使索引是datetime类型,matplotlib有时候也会默认隐藏具体日期,只显示轴标签。你可以手动配置日期格式和标签显示:

import pandas as pd
import numpy as np
import datetime
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter

# 确保索引是datetime类型
ts.index = pd.to_datetime(ts.index)

# 绘制图表并获取轴对象
ax = ts.plot()

# 设置日期的显示格式,这里用年-月-日,你可以按需调整
date_form = DateFormatter("%Y-%m-%d")
ax.xaxis.set_major_formatter(date_form)

# 旋转x轴标签,避免日期重叠挤在一起
plt.xticks(rotation=45)

# 显示图表
plt.show()

3. 额外的小提示

  • 如果你的时间序列日期间隔特别密集,matplotlib会自动跳过一些日期来避免标签重叠,这是正常的。要是你想强制显示特定日期,可以手动设置xticks:
    plt.xticks(ts.index[::2])  # 每隔2个日期显示一个标签,数字可以按需调整
    
  • 要是你的时间序列有缺失的日期,也可能影响显示,必要时可以用ts.asfreq('D')来填充缺失的日期节点。

按上面的步骤调整后,你的X轴应该就能正常显示实际日期了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:30:44