我有一个用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示例时遇到任何麻烦。