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

Plotly下拉菜单无法正确更新图表问题求助

解决Plotly下拉菜单初始双图同时显示的问题

你的问题出在初始状态下两个Scatter trace都是默认可见的,下拉菜单的按钮仅负责切换状态,但未设置初始默认隐藏其中一个。可以通过两种方式解决:

方法一:创建Trace时设置初始可见性

在定义第二个Scatter(Current)时,添加visible=False参数,让它默认不显示:

import plotly.graph_objects as go
import plotly.express as px
import pandas as pd

data = {'Time': [2,4,5,6,7], 'Voltage': [20.3, 17.2,15.3,9.4,2], "Current":[2, 5,7,8,9]}  
df = pd.DataFrame(data)

plot = px.Figure(data=[go.Scatter( 
    name='Voltage', 
    x=df["Time"], 
    y=df["Voltage"]
), 
    go.Scatter( 
    name='Data 2', 
    x=df["Time"], 
    y=df["Current"],
    visible=False  # 初始隐藏Current曲线
) 
]) 

plot.update_layout( 
    updatemenus=[ 
        dict( 
            buttons=list([ 
                dict(label="Voltage", 
                     method="update", 
                     args=[{"visible": [True, False]}, 
                           {"title": "Voltage"}]), 
                dict(label="Current", 
                     method="update", 
                     args=[{"visible": [False, True]}, 
                           {"title": "Current"}]),  # 标题改为Current更贴合数据
            ]), 
        ) 
    ]) 
plot.show() 

方法二:通过updatemenus的active参数指定默认激活按钮

在updatemenus的配置字典里添加active=0(默认激活第一个按钮),同时手动设置初始可见性与激活按钮匹配:

import plotly.graph_objects as go
import plotly.express as px
import pandas as pd

data = {'Time': [2,4,5,6,7], 'Voltage': [20.3, 17.2,15.3,9.4,2], "Current":[2, 5,7,8,9]}  
df = pd.DataFrame(data)

plot = px.Figure(data=[go.Scatter( 
    name='Voltage', 
    x=df["Time"], 
    y=df["Voltage"]
), 
    go.Scatter( 
    name='Data 2', 
    x=df["Time"], 
    y=df["Current"]
) 
]) 

plot.update_layout( 
    updatemenus=[ 
        dict( 
            active=0,  # 默认激活第一个按钮(Voltage)
            buttons=list([ 
                dict(label="Voltage", 
                     method="update", 
                     args=[{"visible": [True, False]}, 
                           {"title": "Voltage"}]), 
                dict(label="Current", 
                     method="update", 
                     args=[{"visible": [False, True]}, 
                           {"title": "Current"}]), 
            ]), 
        ) 
    ]) 
# 同步初始可见性与激活按钮
plot.update_traces(visible=True, selector=dict(name='Voltage'))
plot.update_traces(visible=False, selector=dict(name='Data 2'))

plot.show() 

两种方法都能实现初始仅显示选中的单个图表,下拉切换时正常显示对应曲线。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 01:40:23