使用GraphRenderer在Hover上使用CustomJS

时间:2018-09-10 10:16:00

标签: graph networkx bokeh

我正在使用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)

此代码不起作用,并导致错误消息“ TypeError:n.data_source未定义”。 我尝试使用具有不同数据源的另一种图进行相同的方法:

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

在这里,一切正常。 因此,我认为将data_sources添加到回调中的方式有​​些错误。

这里有没有人有使用bokeh图形渲染器的经验,以及如何引用nxGraph的数据源?

0 个答案:

没有答案