因此,我使用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 }
关于如何使用这些提示?
谢谢!
答案 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