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
相关产品推荐
相关产品推荐

