CustomJS при наведении курсора с GraphRenderer - PullRequest
0 голосов
/ 10 сентября 2018

Я использую Bokeh для отображения некоторых сетевых данных на приборной панели. Фрагмент кода ниже показывает настройку сюжета:

import networkx as nx
from bokeh.models.graphs import from_networkx
p_network = figure(title="Correlation",
               plot_width=400, plot_height=400,
               x_range=(-2,2),y_range=(-2,2),
               tools='', toolbar_location=None)
graph=nx.Graph(df)
graphNX = from_networkx(graph, nx.circular_layout, scale=1, center=(0,0))
p_network.renderers.append(graphNX)

Я сейчас пытаюсь добавить функцию обратного вызова, которая будет выполняться, когда мышь находится над одним узлом узлов. (Конечной целью будет изменение цвета точек на другом графике, но сейчас я просто хочу вывести «hello» на консоль)

code = """console.log('hello');"""
args = {"nodes": graphNX.node_renderer.data_source, "edges":  graphNX.edge_renderer.data_source}
callback = CustomJS(args=args, code=code)
hover_tool = HoverTool(tooltips=None,callback=callback)
p_network.add_tools(hover_tool)

Этот код не работает и приводит к сообщению об ошибке «Ошибка типа: источник данных n.data_defined». Я попробовал тот же метод с другим типом графика с другим источником данных:

points = p.circle(x="lon", y="lat", size=10, source=src)
...
args = {"points": points.data_source}
...

Здесь все работало нормально. Поэтому я предполагаю, что способ добавления data_sources к обратному вызову является каким-то неправильным.

Кто-нибудь здесь имеет опыт работы с рендерингом графиков боке и как обращаться к источнику данных nxGraph?

...