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

如何在Plotly多子图/分面图中添加动态水平线?

为各股票子图添加对应起始价格水平线

完全可行,以下是实现步骤和代码:

核心思路

  1. 获取未基准化的原始股票数据:去掉原代码中的indexed=True,得到各股票的真实价格
  2. 提取每个公司股票的起始价格(对应列的第一行数值)
  3. 遍历每个子图,为对应公司添加专属的起始价格水平线

完整代码

import plotly.express as px

# 获取未基准化的原始股票数据
df = px.data.stocks()
df = df.set_index('date')

# 创建分面子图
fig = px.line(df, facet_col="company", facet_col_wrap=2)

# 为每个公司子图添加对应起始价格的水平线
for company in df.columns:
    # 获取该公司股票的起始价格
    start_price = df[company].iloc[0]
    # 计算子图对应的列索引(Plotly子图col从1开始计数)
    col_idx = list(df.columns).index(company) + 1
    # 确定子图所在行(因facet_col_wrap=2,前2个在第一行,后2个在第二行)
    row_idx = 1 if col_idx <= 2 else 2
    
    fig.add_hline(
        y=start_price,
        line_dash="dot",
        row=row_idx,
        col=col_idx,
        annotation_text=f"起始价: {start_price:.2f}",
        annotation_position="top right",
        annotation_font_size=10
    )

fig.show()

关键说明

  • df[company].iloc[0]精准提取每个公司股票的首个交易日价格
  • 通过row和col参数精准控制水平线添加到对应子图,避免全局添加
  • 可选添加annotation_text参数,让水平线的含义更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 04:06:26