我正在使用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的数据源?