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

如何绘制跨多日期的单日24小时内时间戳分布图表

跨天时间戳24小时分布的优雅实现方案

直接调用matplotlib.pyplot.plot(data.timestamp.dt.time)报错的核心原因是matplotlib不原生支持Python标准库的datetime.time对象作为轴坐标,完全不需要用「把所有时间戳偏移到同一基准日再隐藏日期」这种笨重方案,根据分析场景选下面的方法即可:


场景1:统计时段分布规律(判断上午/下午事件量高低)

如果核心需求是看不同时段的事件频次,根本不需要处理日期部分,直接从时间戳里提取当日的时间维度属性统计即可,代码最简单性能也最高:

  • 粗粒度按小时统计:直接取dt.hour得到0-23的整数,对应一天24个小时
import pandas as pd
import matplotlib.pyplot as plt

# 提取每个事件对应的小时
data['hour'] = data.timestamp.dt.hour
# 按小时排序统计事件量
hourly_event_count = data['hour'].value_counts().sort_index()

# 绘制分布柱状图
plt.figure(figsize=(10, 4))
hourly_event_count.plot(kind='bar', width=0.9)
plt.xticks(rotation=0)
plt.xlabel('24小时制时刻(时)')
plt.ylabel('事件数量')
plt.title('事件全天分布统计')
plt.show()
  • 细粒度按分钟级窗口统计:提取当日从0点开始累计的秒数作为X轴数值,自定义刻度显示为时刻格式即可,不需要修改原时间戳
# 计算每个时间戳对应当日已过的总秒数,作为X轴坐标
data['day_total_seconds'] = (
    data.timestamp.dt.hour * 3600 
    + data.timestamp.dt.minute * 60 
    + data.timestamp.dt.second
)

# 按15分钟分箱画直方图
plt.figure(figsize=(12, 4))
plt.hist(data['day_total_seconds'], bins=96, edgecolor='white')
# 自定义X轴刻度:每3小时显示一个时刻标签
tick_positions = [i * 3600 for i in range(0, 25, 3)]
tick_labels = [f'{i}:00' for i in range(0, 25, 3)]
plt.xticks(tick_positions, tick_labels)
plt.xlabel('时刻')
plt.ylabel('事件数量')
plt.show()

场景2:需要绘制原始事件的时间散点/折线

如果需要直接用datetime类型做轴展示原始事件点,不需要修改原时间戳的日期,只要配置matplotlib的X轴格式化规则,让它只显示时间部分、自动忽略日期即可:

import matplotlib.dates as mdates

plt.figure(figsize=(12, 4))
# Y轴可以根据需求替换成事件对应的其他指标,这里用事件序号做示例
plt.scatter(data.timestamp, range(len(data)), s=10, alpha=0.6)

ax = plt.gca()
# 核心配置:X轴只显示「时:分」格式,自动忽略跨天的日期部分
ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M'))
# 可选:固定X轴范围为完整的0点到24点
ax.set_xlim(pd.Timestamp('00:00:00').time(), pd.Timestamp('23:59:59').time())

plt.xlabel('24小时时刻')
plt.ylabel('事件序号')
plt.show()

小提示:如果要做自定义时段(比如早高峰6-10点、夜间22-6点)的事件量对比,直接用dt.hour做条件筛选统计即可,不需要做任何日期偏移操作,也不会因为时区、夏令时等问题出现计算偏差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:12:19