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

使用matplotlib绘制pandas DataFrame时x轴日期索引格式错误如何解决

问题原因

matplotlib直接接收整个DataFrame作为绘图参数时,不会主动解析pandas的DatetimeIndex类型,只会将索引视为普通序列值处理,因此无法正确渲染为日期格式。

解决方法

有两种常用的修复方案:

方案1:绘图时显式指定x轴、y轴数据

调用plt.plot()时主动传入日期索引作为x轴,对应数值列作为y轴,即可让matplotlib正确识别日期类型:

import pandas as pd
import matplotlib.pyplot as plt

dttm = ["2021-01-01", "2021-01-02", "2021-01-03"]
dttm = pd.to_datetime(dttm)
data = [10, 20, 30]

DF = pd.DataFrame()
DF['value'] = data
DF = DF.set_index(dttm)

# 仅修改这一行,显式传入x和y
plt.plot(DF.index, DF['value'])
plt.gcf().autofmt_xdate()
plt.show()

方案2:使用pandas内置的plot接口

pandas的plot方法原生适配自身的索引和列结构,会自动处理日期索引的渲染逻辑,写法更简洁:

import pandas as pd
import matplotlib.pyplot as plt

dttm = ["2021-01-01", "2021-01-02", "2021-01-03"]
dttm = pd.to_datetime(dttm)
data = [10, 20, 30]

DF = pd.DataFrame()
DF['value'] = data
DF = DF.set_index(dttm)

# 直接调用DataFrame的plot方法
DF.plot()
plt.gcf().autofmt_xdate()
plt.show()
可选:自定义日期显示格式

如果需要进一步调整x轴日期的展示格式,可以搭配matplotlib的日期格式化工具使用:

import matplotlib.dates as mdates

# 其他代码和上述一致
plt.plot(DF.index, DF['value'])
# 设置x轴日期格式为 年-月-日
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
plt.gcf().autofmt_xdate()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:00:06