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

ax.get_xlim()对DatetimeIndex返回错误日期,如何修复?

问题原因与修复方案

问题根源

你调用ax.get_xlim()的时机错了——在绘制数据之前就获取了轴范围。此时坐标轴还未绑定任何数据,matplotlib使用默认的x轴范围(0到1),而matplotlib会把日期转换为从1970-01-01(Unix纪元)开始的浮点天数,0对应的自然就是1970-01-01。

修复方法

调整代码顺序,先绘制数据,再获取x轴范围,让matplotlib先根据数据自动适配坐标轴范围:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

data = pd.DataFrame({
    'Date': pd.date_range('1980-01-01', '2023-01-01', freq='M'),
    'Value': np.random.rand(516)
})
data=data.set_index('Date')
data.index=pd.to_datetime(data.index)
data=data.resample('M').last()

data=data['2003-01-01':]
fig, ax = plt.subplots()
# 先绘制数据,让坐标轴适配数据范围
ax.plot(data)
# 再获取正确的x轴范围
xmin, xmax = ax.get_xlim()
print(pd.Timestamp(xmin))  # 现在会输出2003-01-01相关的时间戳

补充说明

matplotlib处理日期数据时,会将datetime对象转换为从1970-01-01起始的浮点型天数。只有当数据绘制到坐标轴上后,轴才会根据数据的实际范围自动调整xlim,此时调用get_xlim()才能拿到预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:42:59