带规则时间间隔的时序图绘制:二进制视频事件时长可视化咨询
二进制视频事件时序可视化方案(支持时长展示)
Excel 快速改进方案
如果仍想使用Excel,推荐用**甘特图(水平条形图变体)**直接展示事件时长:
- 先整理数据:新增
结束时间列(公式:开始时间戳 + 时长),保留事件ID、状态(二进制)列 - 插入水平条形图,将Y轴设为
事件ID,X轴设为时间轴 - 把每个事件的条形从
开始时间戳延伸到结束时间:调整数据系列的「分类间距」为0,用不同颜色区分二进制状态(比如蓝色代表1,橙色代表0) - 开启X轴的「时间刻度」,按需求设置间隔(如分钟、小时),确保时序清晰
Python 专业实现方案
1. Matplotlib 静态时序条图
适合生成可嵌入报告的静态图,代码直接复用:
import matplotlib.pyplot as plt import pandas as pd # 替换为你的实际数据 data = { "event_id": [1, 2, 3, 4], "start_time": pd.to_datetime(["2024-05-20 08:00:00", "2024-05-20 08:05:30", "2024-05-20 08:12:15", "2024-05-20 08:20:00"]), "duration": [pd.Timedelta(minutes=3), pd.Timedelta(minutes=6), pd.Timedelta(minutes=4), pd.Timedelta(minutes=5)], "status": [1, 0, 1, 0] } df = pd.DataFrame(data) df["end_time"] = df["start_time"] + df["duration"] plt.figure(figsize=(12, 6)) colors = ["#1f77b4" if s == 1 else "#ff7f0e" for s in df["status"]] # 逐个绘制事件时长条 for idx, row in df.iterrows(): plt.barh(row["event_id"], width=row["duration"], left=row["start_time"], color=colors[idx]) plt.xlabel("时间") plt.ylabel("事件ID") plt.title("二进制视频事件时序图(含时长)") plt.grid(axis='x', linestyle='--', alpha=0.7) plt.gcf().autofmt_xdate() # 自动旋转时间标签 plt.show()
2. Plotly 交互式时序图
支持鼠标悬停查看事件详情(开始时间、时长、状态),适合探索性分析:
import plotly.express as px import pandas as pd # 复用上述数据 df = pd.DataFrame(data) df["duration_min"] = df["duration"].dt.total_seconds() / 60 # 生成交互式甘特图 fig = px.timeline(df, x_start="start_time", x_end="end_time", y="event_id", color="status", hover_data={"start_time": ":datetime", "duration_min": ":.1f", "status": True}) fig.update_layout( title="交互式二进制视频事件时序图", xaxis_title="时间", yaxis_title="事件ID", hovermode="x unified" ) fig.update_yaxes(autorange="reversed") # 让事件ID从下往上递增 fig.show()
额外优化建议
- 批量事件先按开始时间排序,避免视觉混乱
- 二进制状态可通过填充/空心样式区分,比如实心条代表1,空心条代表0
- 时间跨度大时,手动设置X轴刻度间隔(如
plt.xlim()或Plotly的xaxis_dtick),保证可读性
内容的提问来源于stack exchange,提问作者Biparite
相关产品推荐
相关产品推荐

