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

使用Plotly在Jupyter Notebook中绘制多组Pandas时间序列

嘿,很高兴你已经能从不同DataFrame画出两组时间序列了!虽然你没明确说具体疑问,但我猜你可能想知道更高效的实现方式、时间轴的优化技巧,或者如何让图表更易读?我来分享几个实用的方案和常见问题解决思路:

用Plotly绘制多组时间序列的实用方案

方案1:优化多DataFrame绘制方式(适配你当前的 workflow)

如果你的两组数据分别存在df1和df2这类独立的DataFrame里,可以用Plotly的add_trace方法逐个添加序列,还能灵活自定义每条曲线的样式:

import plotly.graph_objects as go

# 初始化空图表
fig = go.Figure()

# 添加第一组时间序列
fig.add_trace(go.Scatter(
    x=df1['timestamp'],
    y=df1['data'],
    mode='lines+markers',  # 可选:只保留'lines'或'markers'
    name='数据集1',  # 图例中显示的名称
    line=dict(color='#1f77b4', width=2)  # 自定义线条颜色和粗细
))

# 添加第二组时间序列
fig.add_trace(go.Scatter(
    x=df2['timestamp'],
    y=df2['data'],
    mode='lines+markers',
    name='数据集2',
    line=dict(color='#ff7f0e', width=2, dash='dash')  # 用虚线区分
))

# 配置时间轴和整体布局
fig.update_layout(
    title='多组时间序列对比',
    xaxis_title='时间',
    yaxis_title='数据值',
    xaxis=dict(
        type='date',
        tickformat='%Y-%m-%d %H:%M',  # 自定义时间显示格式
        rangeslider=dict(visible=True)  # 添加时间范围滑块,方便缩放查看
    ),
    hovermode='x unified'  # 鼠标悬停时,同一时间点的所有数据会一起显示
)

# 在Jupyter Notebook中渲染图表
fig.show()

方案2:用单个长格式DataFrame绘制(更简洁高效)

如果能把多组数据合并成长格式DataFrame(新增一列标记数据分组),用Plotly Express会大幅简化代码:
假设合并后的combined_df结构是这样的:

timestampdatagroup
2024-01-01 00:00:0012.3数据集1
2024-01-01 01:00:0015.1数据集1
2024-01-01 00:00:009.8数据集2

实现代码:

import plotly.express as px

fig = px.line(
    combined_df,
    x='timestamp',
    y='data',
    color='group',  # 自动按group列区分不同曲线
    title='多组时间序列对比',
    labels={'data': '数据值', 'timestamp': '时间'},
    markers=True  # 显示数据点标记
)

# 同样可以优化时间轴和交互体验
fig.update_layout(
    xaxis=dict(
        type='date',
        tickformat='%Y-%m-%d %H:%M',
        rangeslider=dict(visible=True)
    ),
    hovermode='x unified'
)

fig.show()

常见疑问的解决思路

  • 时间轴显示错乱:先确认df['timestamp']是datetime64类型,用df['timestamp'] = pd.to_datetime(df['timestamp'])转换后再绘制,Plotly对标准datetime类型的支持最好。
  • 数据时间点不匹配:Plotly会自动按时间点对齐显示,缺失的点不会导致曲线断裂;如果需要填充缺失值,可以用pd.merge(df1, df2, on='timestamp', how='outer')合并后,用fillna()填充。
  • Jupyter中图表不显示:确保安装了plotly和ipywidgets,执行pip install plotly ipywidgets后重启Notebook内核即可。
  • 大数据量性能问题:如果数据量很大,可以用plotly.graph_objects的mode='lines'去掉标记点,或者对数据做降采样(比如按小时聚合)后再绘制。

如果你的具体疑问是以上之外的,比如样式定制、交互功能扩展,欢迎补充细节,我再帮你针对性解决!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:04:26