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

使用DateFormatter时日期重置为1970?Pandas绘图x轴年份标签异常如何解决

问题原因

该问题是Pandas与Matplotlib的日期体系不兼容导致的:
Pandas的DataFrame.plot()默认使用自身的日期刻度体系,没有采用Matplotlibmdates模块识别的日期序数作为x轴单位,直接调用mdates提供的定位器、格式化器会因为坐标单位不匹配,出现标签不显示、日期解析错误的问题。你看到的异常日期就是对错误坐标值做日期格式化输出的结果。

解决方案

方案1:开启Pandas绘图的Matplotlib日期兼容模式

绘图时传入x_compat=True参数,强制Pandas使用Matplotlib兼容的日期坐标系,后续的mdates配置即可正常生效:

import matplotlib.dates as mdates

# 绘图时添加兼容参数
ax = df.plot(x_compat=True)

# 按需求配置年刻度
ax.xaxis.set_major_locator(mdates.YearLocator(base=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y'))

# 可选:自动旋转x轴标签避免重叠
ax.get_figure().autofmt_xdate()

方案2:直接使用Matplotlib原生API绘图

跳过Pandas内置绘图的自定义坐标系,直接传入DatetimeIndex作为x轴数据即可:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

fig, ax = plt.subplots()
# 直接传datetime索引作为x轴
ax.plot(df.index, df['size'])

ax.xaxis.set_major_locator(mdates.YearLocator(base=1))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y'))
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:18:03