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

Python Plotly中如何将add_vline生成的垂直线添加到图例

问题原因

add_vline() 方法生成的是Plotly布局层的*形状(shape)*对象,不属于绘图trace序列,因此默认不会进入图例,也不支持图例控制显隐。只有go.Scatter、go.Bar这类trace类对象才会自动纳入图例管理。

解决方案

最通用的兼容Plotly 4.13版本的方案是改用go.Scatter trace绘制垂直线,可完美适配图例控制需求,示例代码如下:

import plotly.graph_objects as go

fig = go.Figure()

# 先添加原有散点trace
fig.add_trace(
    go.Scatter(
        name="name added to legend",
        # 此处填入你原有的散点数据参数
    )
)

# 自定义y轴范围,也可以根据你的实际y轴数据动态计算min、max值,保证垂直线覆盖整个绘图区域
y_min, y_max = 0, 100 

for idx, dt in enumerate(dates):
    fig.add_trace(
        go.Scatter(
            x=[dt, dt],  # x轴固定为目标日期,两个点连起来即可形成垂直线
            y=[y_min, y_max],
            mode="lines",
            line=dict(width=1, color="gray"), # 可替换为你原来add_vline的line配置参数
            name="日期标注线",
            legendgroup="vline_group", # 所有垂直线设为同一组,可实现点击图例统一显隐
            showlegend=idx == 0 # 仅第一条垂直线显示在图例中,避免出现重复图例项
        )
    )

fig.show()
补充说明
  • 如果需要每条垂直线单独在图例展示、单独控制显隐,只需去掉legendgroup参数,同时把所有垂直线的showlegend都设为True,为每条线设置不同的name即可。
  • 该方案生成的垂直线视觉效果与add_vline()完全一致,同时完全兼容Plotly 4.13版本,不需要升级依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 04:12:03