У меня есть трехмерная диаграмма рассеяния, построенная на графике python, аналогично графику Les Mis в документах .Я пытаюсь сделать рендеринг графика, когда нажимаю на точку, потому что я хочу добавить слой «фокус» поверх него.
Вот пример функции (работа с 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)
.Я попробовал несколько версий того, что описано в этом примере , но я не могу заставить его работать.
Во-первых, я думаю, что мне трудно понять разницу между автономным режимом (я работаю в ноутбуке Jupyter) и онлайн-режимом.Мне сказали, что события нажатия не работают в автономном режиме .Меня не волнует, работает ли это в автономном режиме, но я не могу понять, как опубликовать график, но затем есть событие щелчка, которое повторно отображает график ... это вообще возможно?
Большое спасибо за любую помощь.Дайте мне знать, если у вас возникнут проблемы с воссозданием примера Les Mis с моей новой функцией.