0

我有两个要使用plotly'supdatemenus功能显示的图表。我能够使用该updatemenus功能填充和显示数据。但是,当绘图加载时,两个图都会在最初显示。有没有办法在绘图最初加载时只显示一个图表?

我浏览了updatemenuson的文档,plotly但找不到任何可以帮助我实现这一目标的属性。

trace28 = go.Bar(x=for1.head()['Name'],
                 y=for1.head()['G'],
                 name='Goals',
                 opacity=0.8
                )

trace29 = go.Bar(x=for1.head()['Name'],
                 y=for1.head()['A'],
                 name='Assists',
                 opacity=0.8
                )

trace30 = go.Bar(x=for2.head()['Name'],
                 y=for2.head()['G'],
                 name='Goals',
                 opacity=0.8
                )

trace31 = go.Bar(x=for2.head()['Name'],
                 y=for2.head()['A'],
                 name='Assists',
                 opacity=0.8
                )


updatemenus = list([dict(active=-1,
                         type='buttons',
                         buttons=list([dict(label='2011/12',
                                           method='update',
                                           args=[dict(visible=[True, True, False, False]),
                                                 dict(title='<b>Forward Stats 2011/12</b>')
                                                ]
                                          ),

                                       dict(label='2012/13',
                                           method='update',
                                           args=[{'visible':[False, False, True, True]},
                                                 {'title':'<b>Forward Stats 2012/13</b>'}
                                                ]
                                          ),
                                     ])
                       ),
                  ])

layout = go.Layout(title='<b>Forward Stats</b>',
                   xaxis=dict(title='<b><i>Player Name</b></i>'),
                   yaxis=dict(title='<b><i>Goals/Assists</b></i>'),
                   updatemenus=updatemenus,
                   showlegend=False,
                   barmode='group'
                  )

data = [trace28, trace29, trace30, trace31]
fig = go.Figure(data=data, layout=layout)
py.iplot(fig)

我只想在情节加载时trace28显示。trace29现在,当情节加载时,所有的痕迹都会显示出来。

4

1 回答 1

0

在进行跟踪时,您可以设置visible = "legendonly". 然后,您可以通过单击图例中的线来切换跟踪。这样做是你想要的吗?

所以你会改变trace30trace31

trace30 = go.Bar(x=for2.head()['Name'],
                 y=for2.head()['G'],
                 name='Goals',
                 opacity=0.8,
                 visible = "legendonly"
                )

trace31 = go.Bar(x=for2.head()['Name'],
                 y=for2.head()['A'],
                 name='Assists',
                 opacity=0.8,
                 visible = "legendonly"
                )

这会让你得到你想要的功能吗?

于 2019-04-22T21:13:13.170 回答