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

如何用Python 3.7及Pandas可视化带时间维度的事件序列?

嘿,这个场景太典型了——跟踪这类时序事件链的可视化需求,用Python+Pandas完全能搞定!我给你准备了两种实用方案,一个是交互式的(方便探索数据),一个是静态的(适合嵌入报告),都能清晰展示你的事件序列逻辑。

第一步:准备并预处理数据

首先我们先构造符合你飞机起降场景的示例数据,同时把时间列转成Pandas能处理的datetime类型,这是可视化的关键前提:

import pandas as pd

# 构造示例数据(匹配你的飞机起降场景)
data = {
    "事件描述": ["伦敦起飞", "巴黎降落", "巴黎起飞", "纽约降落", "纽约起飞", "东京降落"],
    "事件时间": ["2020-10-01 10:00:00", "2020-10-01 15:00:00", "2020-10-01 17:00:00", 
               "2020-10-02 08:00:00", "2020-10-02 12:00:00", "2020-10-03 09:00:00"],
    "关联航班": ["AA123", "AA123", "AA123", "AA123", "AA123", "AA123"]
}

df = pd.DataFrame(data)
# 转换时间列为datetime类型
df["事件时间"] = pd.to_datetime(df["事件时间"])
# 添加事件序号,方便后续按序列连线
df["事件序号"] = df.index + 1

方案一:交互式时间线(Plotly)

如果你需要能交互探索的图表(比如放大缩小、hover看详情、隐藏特定事件),用Plotly最合适。先安装依赖:pip install plotly,然后运行以下代码:

import plotly.express as px
import plotly.graph_objects as go

# 用散点图标记每个事件,不同事件用不同颜色区分
fig = px.scatter(df, x="事件时间", y="关联航班", color="事件描述", 
                 text="事件描述", title="航班AA123事件序列时间线")

# 添加灰色连线,把事件按顺序串联起来,清晰展示事件链
fig.add_trace(go.Scatter(
    x=df["事件时间"], y=df["关联航班"],
    mode="lines", line=dict(color="gray", width=2),
    showlegend=False  # 不显示连线的图例
))

# 调整布局,让事件标签显示在点的上方,hover时统一显示时间点的所有信息
fig.update_traces(textposition="top center")
fig.update_layout(xaxis_title="时间", yaxis_title="航班号", hovermode="x unified")

# 打开交互式图表(会在浏览器里显示)
fig.show()

这个图表的优势是互动性强,如果你有多个航班的事件,只需要在关联航班列里区分,y轴会自动生成不同的类别,非常方便多实体跟踪。

方案二:静态时间线(Matplotlib)

如果需要静态图表用于报告、PPT等场景,Matplotlib是最稳妥的选择。代码如下:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

# 设置画布大小,适配时间轴的标签
fig, ax = plt.subplots(figsize=(12, 4))

# 将datetime类型转换为Matplotlib能识别的数值格式
df["时间数值"] = mdates.date2num(df["事件时间"])

# 绘制事件点,设置较大的点和蓝色,突出显示
ax.scatter(df["时间数值"], df["关联航班"], s=100, c="blue", zorder=5)

# 绘制灰色连线,串联事件序列
ax.plot(df["时间数值"], df["关联航班"], color="gray", linestyle="-", linewidth=2)

# 给每个事件点添加文字标签,显示事件描述
for idx, row in df.iterrows():
    ax.text(row["时间数值"], row["关联航班"], row["事件描述"], 
            ha="center", va="bottom", fontsize=10)

# 设置时间轴的显示格式,避免标签拥挤
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m-%d %H:%M"))
plt.xticks(rotation=45)

# 添加标题和轴标签
ax.set_title("航班AA123事件序列时间线", fontsize=14)
ax.set_xlabel("时间", fontsize=12)
ax.set_ylabel("航班号", fontsize=12)

# 调整布局,防止标签被截断
plt.tight_layout()
plt.show()

你可以根据需求自定义颜色、点大小、标签样式等,完全适配你的报告风格。

内容的提问来源于stack exchange,提问作者Lion Nadej Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 15:22:44