使用按钮隐藏Plotly / Python中的注释

时间:2019-01-16 17:19:48

标签: python-3.x button label plotly networkx

因此,我使用Plotly构建了一个网络图。输出很好。现在,我想为网络的每个节点添加标签。为了做到这一点,我使用了Plotly注释。对于网络中的每个节点,pos的位置为{node_id:(x,y)}G是我的networkx图。

layoutAnnotationList = []
for  k,p in pos.items():
    x = p[0]
    y = p[1]
    try:
        text = G.node[k]['hostname']
    except:
        text = k
    layoutAnnotationList.append( { 'x':x, 'y':y, 'text':text } )

此后,我将列表layoutAnnotationList添加到布局本身。

layout = { 'annotations': layoutAnnotationList } 

现在,我已经读过this,了解如何使用relayout方法将按钮添加到布局中,但是我真的不明白如何制作这些按钮来显示或隐藏注释

我创建了一个layoutButtons列表,我必须在网页上显示它们,但是我对它们的功能一无所知。

layout = { 'annotations': layoutAnnotationList, 'updatemenus':layoutButtons }

enter image description here

关于如何使用这些提示?

谢谢!

2 个答案:

答案 0 :(得分:2)

因此,仔细阅读后,解决方案是在创建按钮时使用update方法。

layoutButtons = list([
                dict(type="buttons",
                     active=-1,
                     buttons=list([   
                        dict(label = 'Label:On',
                             method = 'update',
                             args = [{'visible': [True, True, True, True]},{'annotations':layoutAnnotationList}]
                             ),
                        dict(label = 'Label:Off',
                             method = 'update',
                             args = [{'visible':[True, True, False, False]},{'annotations':[]}]
                             ),
                            ]
                        )
                     )
                ]   
            )

我从here那里得到了这个主意。仍然不知道如何解释参数中的{'visible':[True, True, False, False]}字典,但是它可以正常工作。

答案 1 :(得分:1)

Slider Controls的详细文档中的code建议将{'visible':[True, False...]}字典映射到数据列表,其中True的意思是“显示我的数据列表的索引”,而{ {1}}“隐藏我的数据列表的该索引”。换句话说,每个数据项应该有一个True / False。

在代码示例中,他们最初将False中的每个项目的visible设置为data

False

然后他们将一个切换为data = [dict( visible = False, line=dict(color='#00CED1', width=6), name = ' = '+str(step), x = np.arange(0,10,0.01), y = np.sin(step*np.arange(0,10,0.01))) for step in np.arange(0,5,0.1)] ,因此在加载绘图时会显示一些数据:

True

接下来,在定义滑块的步骤时,它们将所有数据项的data[10]['visible'] = True 参数重置为visible,然后将第i个切换为False

True

在滑块中选择第i步时,第i个数据项将变为可见。

因此,在此问题的原始示例中,我们希望将steps = [] for i in range(len(data)): step = dict( method = 'restyle', args = ['visible', [False] * len(data)], ) step['args'][1][i] = True # Toggle i'th trace to "visible" steps.append(step) 按钮的所有visible参数设置为True,将{的所有参数都设置为Label:On {1}}按钮,因此您可以编写:

False