如何使用pandas绘制日期为X轴的图表并设置日期间隔
解决方案
1. 正确设置X轴为日期列
首先确认日期转换步骤已完成赋值,很多使用者容易遗漏赋值操作,导致转换结果没有生效:
# 日期转换操作需赋值回原Date列 df["Date"] = pd.to_datetime(df["Date"], format="%Y%m%d")
两种常用实现方案:
- 方法1:直接调用pandas内置plot方法,显式指定x、y参数,即可避免默认用索引作为X轴
import pandas as pd import matplotlib.pyplot as plt df.plot(x="Date", y="DailyPositive", figsize=(12, 6), ylabel="每日新增病例数")
- 方法2:用matplotlib原生接口绘图,直接传入日期列作为X轴输入
plt.figure(figsize=(12, 6)) plt.plot(df["Date"], df["DailyPositive"]) plt.ylabel("每日新增病例数")
2. 设置X轴按指定月份间隔显示刻度
借助matplotlib.dates模块的定位器功能即可实现,绘图完成后添加以下代码即可:
import matplotlib.dates as mdates ax = plt.gca() # 设置X轴主刻度间隔为3个月,修改interval参数可自定义间隔月数,比如interval=6就是每半年一个刻度 ax.xaxis.set_major_locator(mdates.MonthLocator(interval=3)) # 设置刻度显示格式为年-月,避免日期过长重叠 ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m")) # 可选操作:旋转刻度45度,进一步避免文字重叠 plt.xticks(rotation=45) # 自动调整布局,防止底部刻度被截断 plt.tight_layout() plt.show()
异常排查
如果修改后X轴显示仍然异常,可运行print(df["Date"].dtype)检查日期列类型,输出为datetime64[ns]才是转换成功,如果是object类型说明转换步骤失效,检查原始日期列的格式是否和format="%Y%m%d"规则匹配。
内容的提问来源于stack exchange,提问作者Moon Chan
相关产品推荐
相关产品推荐

