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

求助:Python Plotly多股票时序图实现水平滚动与系列切换

Plotly 多股票时序图:水平滚动+系列切换简易实现

以下是满足需求的极简示例,包含两只股票的价格时序展示,同时支持水平滚动和点击图例切换股票显示/隐藏,代码结构清晰,可轻松扩展到3-6只股票:

import numpy as np
import pandas as pd
import plotly.graph_objects as go

# 生成模拟股票数据(两只股票,200个交易日)
np.random.seed(42)
n_periods = 200
dates = pd.date_range(start='2020-01-01', periods=n_periods)
# 生成两只股票的累计收益模拟价格
stock_a = 100 + np.cumsum(np.random.normal(0, 1, n_periods))
stock_b = 120 + np.cumsum(np.random.normal(0, 1.2, n_periods))

# 创建Plotly图表对象
fig = go.Figure()

# 添加股票A的时序曲线
fig.add_trace(go.Scatter(
    x=dates,
    y=stock_a,
    name='股票A',
    line=dict(color='#1f77b4')
))

# 添加股票B的时序曲线
fig.add_trace(go.Scatter(
    x=dates,
    y=stock_b,
    name='股票B',
    line=dict(color='#ff7f0e')
))

# 配置布局:启用水平滚动+设置样式
fig.update_layout(
    title='股票价格时序图',
    xaxis=dict(
        title='日期',
        # 启用水平滚动条
        rangeslider=dict(visible=True),
        # 可选:添加快速时间范围选择器
        rangeselector=dict(
            buttons=list([
                dict(count=1, label='1月', step='month', stepmode='backward'),
                dict(count=3, label='3月', step='month', stepmode='backward'),
                dict(count=6, label='6月', step='month', stepmode='backward'),
                dict(step='all', label='全部')
            ])
        )
    ),
    yaxis=dict(title='价格'),
    showlegend=True,  # 显示图例,用于切换股票显示/隐藏
    height=600
)

# 显示图表
fig.show()

关键功能说明

  • 水平滚动:通过xaxis.rangeslider=dict(visible=True)启用底部的水平滚动条,拖动即可查看不同时间段的数据;额外添加的rangeselector可以快速切换时间范围(比如查看最近1/3/6个月数据)。
  • 系列切换:Plotly默认支持点击图例中的股票名称,即可切换对应股票曲线的显示/隐藏状态,无需编写复杂的按钮逻辑,操作直观。

扩展到3-6只股票的方法

如果需要添加更多股票,只需:

  1. 生成对应股票的价格数据(比如新增stock_c、stock_d等);
  2. 重复调用fig.add_trace(go.Scatter(...))添加新的曲线,设置不同的name和颜色即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 14:26:15