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

如何使用Python Plotly绘制按列分类的时间序列散点图

实现方案

你不需要手动为每一列创建固定数值的辅助列,核心解决思路是先把宽格式的日期数据表转换为长格式,再直接利用Plotly对分类轴的原生支持绘图,该方案可自动适配任意列数、任意数据量级,不需要逐列手动编写绘图逻辑。

核心步骤

  • 用pandas的melt方法将原始多列日期数据从宽表转为长表,自动生成「类别列」(存储原始数据的列名,如a、b)和「时间列」(存储对应的事件发生时间),无需手动给每个类别分配固定y值。
  • 绘图时直接将y轴映射到类别列即可,Plotly会自动将分类值排布为独立的水平层级,同一类别的所有数据点会自然落在同一条水平线上。

最简实现代码(基于Plotly Express)

import plotly.express as px
import pandas as pd

# 原始数据,无需提前创建value_a、value_b这类辅助列
df = pd.DataFrame(dict(
    a=["2020-01-10", "2020-02-10", "2020-03-10", "2020-04-10", "2020-05-10", "2020-06-10"],
    b=["2020-01-05", "2020-02-15", "2020-03-18", "2020-08-10", "2021-05-10", "2021-06-10"]
))

# 宽表转长表
df_long = df.melt(var_name="category", value_name="event_time")
# 转换时间列为标准datetime格式,避免横轴识别异常
df_long["event_time"] = pd.to_datetime(df_long["event_time"])

# 一键生成散点图,无需逐列添加trace
fig = px.scatter(
    df_long,
    x="event_time",
    y="category",
    color="category" # 不同类别自动分配不同颜色,不需要可删除该参数
)

# 保留原有x轴配置
fig.update_xaxes(showgrid=True, ticklabelmode="period")
fig.show()

graph_objects版本实现

如果你习惯使用plotly.graph_objects接口,只需要遍历长表中的唯一类别自动生成trace即可,同样不需要手动给每个类别设置固定y值:

import plotly.graph_objects as go
import pandas as pd

df = pd.DataFrame(dict(
    a=["2020-01-10", "2020-02-10", "2020-03-10", "2020-04-10", "2020-05-10", "2020-06-10"],
    b=["2020-01-05", "2020-02-15", "2020-03-18", "2020-08-10", "2021-05-10", "2021-06-10"]
))

df_long = df.melt(var_name="category", value_name="event_time")
df_long["event_time"] = pd.to_datetime(df_long["event_time"])

fig = go.Figure()
# 自动遍历所有类别生成对应散点轨迹
for cat in df_long["category"].unique():
    cat_subset = df_long[df_long["category"] == cat]
    fig.add_trace(go.Scatter(
        mode="markers",
        x=cat_subset["event_time"],
        y=cat_subset["category"],
        name=cat
    ))

fig.update_xaxes(showgrid=True, ticklabelmode="period")
fig.show()

适配说明

后续新增数据列时,只需要在原始DataFrame中添加对应列即可,不需要修改任何绘图逻辑,melt会自动识别所有列并转换为对应的纵轴分类,即使是上百列、百万级数据点也可以正常处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:48:15