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

Plotly Python折线图:如何一键取消所有线条选中状态

实现Plotly折线图一键隐藏所有波形的交互式方法

嘿,这个需求太贴合实际场景了!手动逐个点击图例隐藏波形确实麻烦,Plotly提供了交互式控件可以轻松实现一键操作,我给你两种实用方案:

方案一:添加「一键隐藏所有波形」按钮

这个方案会在图表上方添加一个按钮,点击后直接把所有波形设为隐藏状态,之后你就可以通过图例单独点击想要查看的波形了。

修改后的代码如下:

import numpy as np
import plotly.graph_objects as go

step = 1/1000
t = np.arange(0,1,step) # time vector
trig_func = lambda ff : np.sin(2*np.pi*ff*t)

fig = go.Figure()
for freq in [1, 3, 5, 7]:
    y = trig_func(freq)
    fig.add_trace(go.Scatter(x=t, y=y, name=f"{freq} Hz"))

# 添加一键隐藏所有轨迹的按钮
fig.update_layout(
    updatemenus=[
        dict(
            type="buttons",
            direction="left",
            buttons=list([
                dict(
                    label="隐藏所有波形",
                    method="update",
                    args=[{"visible": [False]*len(fig.data)}, # 所有轨迹设为不可见
                          {"title": "所有波形已隐藏,点击图例选择要查看的波形"}]
                )
            ]),
            pad={"r": 10, "t": 10},
            showactive=True,
        )
    ]
)

fig.show()

代码说明:

  • 通过updatemenus添加按钮控件,点击按钮时调用update方法,把所有轨迹的visible属性设为False
  • 同时更新图表标题,提示用户接下来可以通过图例选择单个波形

方案二:直接切换显示单个波形(更高效)

如果你的核心需求是快速查看单个波形,不如直接做一个切换按钮组,点击对应频率按钮就能直接显示该波形,其余自动隐藏,省去先全隐藏再选择的步骤:

修改后的代码:

import numpy as np
import plotly.graph_objects as go

step = 1/1000
t = np.arange(0,1,step) # time vector
trig_func = lambda ff : np.sin(2*np.pi*ff*t)

fig = go.Figure()
freq_list = [1, 3, 5, 7]
for freq in freq_list:
    y = trig_func(freq)
    fig.add_trace(go.Scatter(x=t, y=y, name=f"{freq} Hz"))

# 添加切换单个波形的按钮组
button_list = []
# 先添加一个显示所有波形的按钮
button_list.append(
    dict(
        label="显示所有波形",
        method="update",
        args=[{"visible": [True]*len(fig.data)},
              {"title": "所有正弦波形"}]
    )
)
# 为每个频率添加单独显示的按钮
for idx, freq in enumerate(freq_list):
    visible = [False]*len(fig.data)
    visible[idx] = True # 仅当前频率的轨迹可见
    button_list.append(
        dict(
            label=f"仅显示{freq} Hz",
            method="update",
            args=[{"visible": visible},
                  {"title": f"{freq} Hz 正弦波形"}]
        )
    )

fig.update_layout(
    updatemenus=[
        dict(
            type="buttons",
            direction="left",
            buttons=button_list,
            pad={"r": 10, "t": 10},
            showactive=True,
        )
    ]
)

fig.show()

代码说明:

  • 生成一个按钮组,包含「显示所有波形」和每个频率的「仅显示X Hz」按钮
  • 点击单个频率按钮时,自动将对应轨迹设为可见,其余设为不可见,同时更新标题突出当前显示的波形

另外补充个小技巧:Plotly图例支持按住Ctrl键点击来批量选择/取消多个波形,不过如果需要一键全隐藏,上面的按钮方案还是更便捷。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:30:10