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

Matplotlib从文件读取数据 自定义X轴日期为月-日格式

Matplotlib 子图X轴日期自定义为月-日格式方案

你之前的日期解析逻辑方向是对的,只是缺少X轴刻度的显示格式配置环节——不需要修改解析后的原始时间数据,只要通过Matplotlib自带的日期处理工具做显示层的格式映射即可,具体实现步骤如下:

  • 先补全导入依赖,除datetime外需要引入Matplotlib的日期处理模块:
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# 若用pandas读取CSV可额外导入,日期解析会更简便
import pandas as pd
  • 修正你原有解析代码的语法问题(原代码末尾缺失右括号),注意解析后保留完整datetime对象即可,不需要提前转date类型丢失时间精度:
# date为从CSV读取得到的原始日期字符串列表,格式为「年-月-日 时:分」
x = [dt.datetime.strptime(d, '%Y-%m-%d %H:%M') for d in date]
  • 绘图完成后,给对应子图的X轴配置显示格式,多子图场景下给每个轴对象单独应用配置即可:
# 示例:创建2行1列的子图
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8), sharex=True)
# 正常完成你的绘图逻辑,例如 ax1.plot(x, y1), ax2.bar(x, y2)

# 核心配置:指定X轴刻度显示为「月-日」格式
x_axis_format = mdates.DateFormatter('%m-%d')
ax1.xaxis.set_major_formatter(x_axis_format)
ax2.xaxis.set_major_formatter(x_axis_format)

# 可选优化:刻度过密时可设置刻度间隔,例如每2天显示一个刻度
ax1.xaxis.set_major_locator(mdates.DayLocator(interval=2))
# 自动旋转X轴日期标签,避免文字重叠
fig.autofmt_xdate()

plt.tight_layout()
plt.show()

注意事项

  • 不要在日期解析阶段直接截断字符串去掉年份,保留完整datetime对象才能保证时序绘图的坐标准确性,格式调整只需要控制显示层逻辑即可
  • 如果用pandas读取CSV,可直接在pd.read_csv()中传入parse_dates=['你的日期列名']参数自动完成时间解析,后续X轴格式配置方法完全一致
  • 如果时间跨度更小、需要显示更细粒度的时间,只要把DateFormatter的格式字符串改成你需要的形式即可,比如'%m-%d %H:%M'就能显示带小时分钟的月日时间

内容的提问来源于stack exchange,提问作者Oriol Villanova Llorens

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:33:16