您可以将您的url传递给JS回调并使用它打开它 open() 方法如下例所示。单击节点将打印回调对象 cb_obj ,回调数据 cb_data 和其他信息到开发人员工具控制台,例如在谷歌浏览器中。此外,将打印所选索引和相应的数据值。请注意你的 graph_renderer.selection_policy 将在执行此JS回调之前首先应用。我希望它有所帮助
open()
cb_obj
cb_data
graph_renderer.selection_policy
import networkx as nx from bokeh.io import show, output_file from bokeh.models import Plot, Range1d, MultiLine, Circle, TapTool, OpenURL, HoverTool, CustomJS from bokeh.models.graphs import from_networkx, EdgesAndLinkedNodes from bokeh.palettes import Spectral4 tooltips = """ <div id="picture" style="width : 550px; position: fixed; left: 250px; top: 80px"> <div> <img src="http://localhost/@color/@weight/" alt="http://localhost/@color/@weight/" height=300 border="2" ></img> </div> </div> """ G = nx.Graph() G.add_node('X', color = 'color of node') G.add_edge('Y', 'X', weight = 6, color = "blue") G.add_edge('Z', 'X', weight = 3, color = "yellow") G.add_edge('Y', 'Z', weight = 7, color = "red") plot = Plot(x_range = Range1d(-1.1, 1.1), y_range = Range1d(-1.1, 1.1)) graph_renderer = from_networkx(G, nx.circular_layout, scale = 1, center = (0, 0)) graph_renderer.node_renderer.glyph = Circle(size = 15, fill_color = Spectral4[0]) graph_renderer.node_renderer.selection_glyph = Circle(size = 15, fill_color = Spectral4[2]) graph_renderer.node_renderer.hover_glyph = Circle(size = 15, fill_color = Spectral4[1]) graph_renderer.edge_renderer.glyph = MultiLine(line_color = "#CCCCCC", line_alpha = 0.8, line_width = 5) graph_renderer.edge_renderer.selection_glyph = MultiLine(line_color = Spectral4[2], line_width = 5) graph_renderer.edge_renderer.hover_glyph = MultiLine(line_color = Spectral4[1], line_width = 5) graph_renderer.selection_policy = EdgesAndLinkedNodes() graph_renderer.inspection_policy = EdgesAndLinkedNodes() plot.renderers.append(graph_renderer) url = "http://localhost/@color/@weight/@index" code = ''' //open(url); console.log(cb_obj); console.log(cb_data); console.log(cb_data.source.selected.indices); console.log(cb_data.source.data); selected = cb_data.source.selected.indices if (selected.length > 0) for (index in selected) console.log('index: ' + selected[index] + ', value: ' + cb_data.source.data.index[selected[index]]) console.log(''); ''' callback_tap_tool = CustomJS(args = dict(url = url), code = code) plot.add_tools(HoverTool(tooltips = tooltips), TapTool(callback = callback_tap_tool)) output_file("example.html") show(plot)