python单击时重新绘制图

时间:2018-10-12 11:05:27

标签: python plotly

我有一个用python plotly构建的3D Scatterplot,类似于the Les Mis plot in the docs。当我单击一个点时,我试图重新绘制该图,因为我想在其顶部添加一个“焦点”层。

这是一个示例函数(根据上面链接的Les Mis示例工作):

def focus_plot(focus):

    focus_links = [l for l in data['links'] if (l['source']==focus) or (l['target']==focus)]

    winners = []
    for l in focus_links:
        winners += [l['source'], l['target']]
    winners = list(set(winners))

    XnF=[layt[k][0] for k in range(N) if k in winners]# x-coordinates of nodes
    YnF=[layt[k][1] for k in range(N) if k in winners]# y-coordinates
    ZnF=[layt[k][2] for k in range(N) if k in winners]# z-coordinates

    trace2F=go.Scatter3d(x=XnF,
                   y=YnF,
                   z=ZnF,
                   mode='markers',
                   name='actors',
                   marker=dict(symbol='circle',
                                 size=20,
                                 opacity = 0.6,
                                 color=[1]*len(winners),
                                 colorscale='Viridis')
                   )
return trace2F

然后您可以做类似的事情

def re_render(foc_pt):
    trace2F = focus_plot(foc_pt)
    fig=go.Figure(data=plot_data + [trace2F], layout=layout)
    py.iplot(fig)

re_render(10)

它将重新渲染图,但是链接到节点10的节点周围有淡蓝色的圆圈。

但是我想要的是能够单击在一个节点上并将其称为re_render(node_I_clicked_on)。我已经尝试了this example中描述的内容的许多版本,但无法正常工作。

一方面,我想我很难理解离线模式(我正在使用Jupyter笔记本进行开发)和在线模式之间的区别。有人告诉我click events don't work in offline mode。我真的不在乎它是否可以在离线模式下工作,但是我不知道如何发布剧情,但是有一个单击事件可以重新渲染剧情...甚至可以吗?

非常感谢您的帮助。让我知道您是否在使用我的新功能重新创建Les Mis示例时遇到任何麻烦。

0 个答案:

没有答案