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

如何将Plotly时间序列折线图按日期分类,展示每日上下行速度

解决方案

要实现按日期拆分上传/下载速度折线(共20条)并共享时段X轴,核心是把宽格式数据转换为长格式,让每条折线对应「日期+速度类型」的组合,具体修改如下:

步骤1:重塑数据结构

原数据是宽格式(download和upload各占一列),需要用pd.melt转成长格式,让每条记录对应一个「日期-时段-速度类型-速度值」的组合:

# 原df生成后,添加这一步
df_melted = df.melt(
    id_vars=['date', 'time'],  # 保留作为标识的列
    value_vars=['download_mbps', 'upload_mbps'],  # 需要转换的列
    var_name='speed_type',  # 新列:标识是上传还是下载
    value_name='speed_value'  # 新列:速度数值
)

步骤2:绘制折线图

用Plotly Express指定X轴为时段time,Y轴为速度值speed_value,通过分组参数生成对应折线:

方式1:颜色区分日期,线型区分上传/下载(更易读)

fig = px.line(
    df_melted,
    x='time',
    y='speed_value',
    color='date',  # 不同日期用不同颜色
    line_dash='speed_type',  # 上传/下载用不同线型
    labels={
        'time': '一天中的时段',
        'speed_value': '速度(Mbps)',
        'date': '日期',
        'speed_type': '速度类型'
    },
    title='每日上传/下载速度变化'
)
fig.show()

方式2:生成20条独立折线(每个日期+类型单独一条)

如果需要图例直接显示「2024-05-01 下载」这类明确标签,可先合并日期和类型为新列:

df_melted['date_type'] = df_melted['date'].astype(str) + ' ' + df_melted['speed_type'].str.replace('_mbps', '')

fig = px.line(
    df_melted,
    x='time',
    y='speed_value',
    color='date_type',
    labels={
        'time': '一天中的时段',
        'speed_value': '速度(Mbps)',
        'date_type': '日期-类型'
    },
    title='每日上传/下载速度变化'
)
fig.show()

关键说明

数据重塑后,每条记录对应一个具体的时段、日期、速度类型和数值,Plotly会自动按分组生成对应折线;所有折线共享time作为X轴,可直接对比不同日期同一时段的速度差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:05:02