如何使用DataFrame.plot()快速绘图并设置正确日期格式?
解决pandas df.plot日期轴显示1970的问题
问题根源
你当前的Date列只是字符串类型,且未设为DataFrame的索引,df.plot()默认用行号(整数索引)作为X轴,matplotlib会把这些整数解析成1970-01-01以来的天数,所以出现错误的起始日期。
核心解决思路
把Date列转为datetime类型并设为索引,让df.plot()直接用日期索引绘图,同时配置日期格式化器,既保留批量绘图的速度,又修复日期显示问题。
修改后的完整代码
import pandas as pd import matplotlib.pyplot as plt import matplotlib.dates as mdates # 补上缺失的日期格式化模块 # 读取数据时直接处理日期列 df_file = r"C:\Codes\df_file.csv" # parse_dates将Date列转为datetime类型,index_col设为DataFrame索引 df = pd.read_csv(df_file, parse_dates=["Date"], index_col=["Date"]) fig = plt.figure(figsize=(12.0, 8.0)) # 指定ax参数,确保绘图在当前创建的画布轴上 df.plot(marker='.', linestyle='none', ax=plt.gca()) plt.title("data_frame_show date", fontsize=16) # 配置日期显示格式 date_format = mdates.DateFormatter('%y%m') plt.gca().xaxis.set_major_formatter(date_format) # 自动旋转X轴标签,避免重叠(可选) plt.gcf().autofmt_xdate() plt.legend(loc=(1.04, 0)) plt.show()
关键细节说明
- 读取数据时用
parse_dates和index_col一步到位,比后续手动转换更高效,同时让df.plot()直接识别日期索引作为X轴。 - 指定
ax=plt.gca()可以避免pandas自动创建新的子图,确保绘图在你预先定义的画布上。 autofmt_xdate()是可选优化,解决日期标签过多时的重叠问题。
内容的提问来源于stack exchange,提问作者XYZ
相关产品推荐
相关产品推荐

