Как показать только одну трассировку при плотном обновлении меню в Jupyter Notebook? - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть два графика, которые я хочу показать с помощью функции plotly updatemenus. Я могу заполнять и отображать данные, используя функцию updatemenus. Однако, когда график загружается, оба графика отображаются изначально. Есть ли способ показать только один график при начальной загрузке графика?

Я просмотрел документацию для updatemenus на 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, когда график загружается. Прямо сейчас все следы отображаются при загрузке графика.

1 Ответ

0 голосов
/ 23 апреля 2019

При выполнении трассировки вы можете установить visible = "legendonly".Затем вы можете переключить трассировку, нажав на строку в легенде.Делает ли это то, что вы хотите?

То есть вы изменили бы trace30 и trace31

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"
                )

Получите ли вы желаемую функциональность?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...