首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用按钮隐藏Plotly/Python中的批注

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

Stack Overflow用户
提问于 2019-01-17 01:19:48
回答 2查看 2K关注 0票数 2

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

代码语言:javascript
复制
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添加到布局本身。

代码语言:javascript
复制
layout = { 'annotations': layoutAnnotationList } 

现在,我已经阅读了关于如何使用relayout方法将按钮添加到布局的this,但我真的不理解如何使这些按钮显示或隐藏注释。

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

代码语言:javascript
复制
layout = { 'annotations': layoutAnnotationList, 'updatemenus':layoutButtons }

有什么关于如何使用它们的提示吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-17 02:12:49

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

代码语言:javascript
复制
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]}字典中的参数,但它是有效的。

票数 3
EN

Stack Overflow用户

发布于 2019-03-28 04:12:26

幻灯片控件绘图文档中的这个code建议{'visible':[True, False...]}字典映射到数据列表,True表示“显示我的数据列表的这个索引”,False表示“隐藏我的数据列表的这个索引”。换句话说,每个数据项应该有一个True/False。

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

代码语言:javascript
复制
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)]

然后将1切换为True,以便在加载绘图时显示一些数据:

代码语言:javascript
复制
data[10]['visible'] = True

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

代码语言:javascript
复制
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)

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

因此,在这个问题的原始示例中,我们希望将Label:On按钮的所有visible参数设置为True,并将Label:Off按钮的所有参数设置为False,因此您可以这样写:

代码语言:javascript
复制
'visible':[True] * len(pos)

'visible':[False] * len(pos)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54222205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档