如何使用图表离线显示/隐藏带有复选框的子图

时间:2018-06-16 07:08:18

标签: python plotly

我正在使用绘图离线模式创建具有共同x轴的垂直堆叠子图(1列和10行)。我想通过使用复选框或下拉列表来显示/隐藏子图。

以下是我正在使用的示例代码。基本上我需要在渲染后隐藏一些子图。例如,在5个子图中,我想隐藏plot2和plot4。隐藏后,只显示3个子图。因此,不仅仅是试图隐藏数据系列,因为它仍将保留子图空间。

FBSDKGraphRequest(graphPath: "me", parameters: ["fields":"id,name,first_name,email,birthday"]).start(completionHandler: { (connection, result, error) in })

1 个答案:

答案 0 :(得分:0)

我不确定您为什么不只是使用legend来切换跟踪的可见性。无论如何你去,我使用for loops and if conditions生成组成下拉列表的必要对象,研究代码并让我知道是否有任何问题实现!

import pandas as pd
import numpy as np
import plotly.offline as py_offline
import plotly.graph_objs as go
from plotly import tools
py_offline.init_notebook_mode()

trace = go.Scatter(
    x=[1, 2, 3],
    y=[4, 5, 6]
)

fig = tools.make_subplots(rows=10, cols=1)

for k in range(10):
    fig.append_trace(trace, k+1, 1)

updatemenus=list([
    dict(
        buttons=[],
        direction = 'down',
        pad = {'r': 10, 't': 10},
        showactive = True,
        x = 0,
        xanchor = 'left',
        y = 1.2,
        yanchor = 'top' 
    ),
])

lister = []
for k in range(11):
    lister.append(dict(
        args=['visible', [True for k in range(10)] if k == 0 else [True if (i+1) == k else False for i in range(10)]],
        label='Show Trace ' + str( 'All' if k == 0 else k),
        method='restyle'
    ))

updatemenus[0]['buttons'] = lister

fig['layout']['updatemenus'] = updatemenus


fig['layout'].update(title='subplots')
py_offline.iplot(fig, filename='simple-subplot')

enter image description here