我正在尝试显示具有可拖动节点的图形。我尝试通过添加一个PointDrawTool
来修改一些示例,如下所示:
import networkx as nx
from bokeh.io import show, curdoc
from bokeh.layouts import Column
from bokeh.models import Plot, Range1d, MultiLine, Circle
from bokeh.models.graphs import from_networkx
from bokeh.palettes import Spectral4
from bokeh.models import PointDrawTool
G = nx.karate_club_graph()
def create_graph(layout_func, **kwargs):
plot = Plot(plot_width=400, plot_height=400,
x_range=Range1d(-1.1, 1.1), y_range=Range1d(-1.1, 1.1))
graph_renderer = from_networkx(G, layout_func, **kwargs)
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)
plot.renderers.append(graph_renderer)
return plot, graph_renderer
plot_1, gr = create_graph(nx.circular_layout, scale=1, center=(0, 0))
draw_tool = PointDrawTool(renderers=[gr.node_renderer], empty_value='black')
plot_1.add_tools(draw_tool)
plot_1.toolbar.active_tap = draw_tool
plot_1.add_tools(draw_tool)
layout = Column(plot_1)
doc = curdoc()
doc.add_root(layout)
show(layout)
图形正确显示,并且在工具框中看到了点绘制工具,但是我无法绘制或拖动任何东西。我在做什么错了?