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

Python如何循环生成日期时间序列用于matplotlib绘图

自动生成连续时间序列的高效实现方案

你不需要手动逐个录入datetime对象,以下两种方案都可以快速生成指定粒度、指定范围的时间序列,直接适配matplotlib的x轴输入要求:


方案1:基于Python标准库实现,无第三方依赖

不需要安装额外包,通过timedelta做时间步长累加即可,灵活度高:

  • 先定义时间序列的起始、结束时间点
  • 循环累加固定步长的时间差,直到到达结束时间
  • 步长可以自由调整,支持小时、分钟、天等任意粒度

示例代码:

from datetime import datetime, timedelta

# 定义时间范围
start_time = datetime(2022, 6, 21, 0)
end_time = datetime(2022, 6, 25, 23)

dates = []
current_time = start_time
while current_time <= end_time:
    dates.append(current_time)
    current_time += timedelta(hours=1)  # 步长设为1小时,改参数即可调整粒度

如果要生成一整周(168小时)的逐小时数据,不需要手动算结束日期,直接用end_time = start_time + timedelta(days=7)即可,自动生成刚好168个时间点。


方案2:用pandas.date_range一行生成,适合数据处理场景

做时序数据分析时更推荐这个方法,不需要手写循环,内置了非常丰富的时间粒度配置:

  • 直接传入起止时间、时间粒度参数,一行代码生成完整序列
  • 支持工作日、月初、月末、自定义间隔等特殊时间规则
  • 输出结果可以直接转为Python原生datetime对象,适配matplotlib输入

示例代码:

import pandas as pd

# freq='H'代表逐小时粒度,调整freq参数即可修改步长
dates = pd.date_range(
    start="2022-06-21 00:00:00",
    end="2022-06-25 23:00:00",
    freq="H"
).to_pydatetime()

常用freq参数参考:

  • 15T:每15分钟
  • 2H:每2小时
  • D:每天
  • B:每个工作日

完整绘图示例

替换原来手动写dates列表的部分即可直接运行:

import matplotlib.pyplot as plt
import pandas as pd

# 生成逐小时时间序列
dates = pd.date_range(start="2022-06-21 00:00:00", end="2022-06-28 00:00:00", freq="H").to_pydatetime()
# 自动匹配x轴长度生成y值,不需要手动数元素个数
y = list(range(len(dates)))

plt.plot(dates, y)
# 自动旋转x轴时间标签,避免文字重叠
plt.gcf().autofmt_xdate()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:21:13