使用“from\u networkx()时隐藏可拖动节点`

2024-04-19 00:10:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图显示一个带有可拖动节点的图形。我尝试通过添加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)

图形显示正确,我在工具箱中看到了点绘制工具,但我不能绘制或拖动任何东西。我做错什么了?你知道吗


Tags: fromimportnodeplotlinebokehwidthgraph