使用Bokeh在网络图中拖放节点

时间:2019-04-21 17:22:44

标签: python-3.x bokeh

我从散景开始。我画了一个网络图。有用。 我想在“节点”上拖放以使其在绘图中移动,以使节点关系更清晰:

到目前为止,我有以下内容(只写了重要的几行):

df = pd.read_csv('data.csv', sep=" ", header=None)
G = nx.from_pandas_edgelist(d, 0, 1) 
plot = Plot(background_fill_color="lightgrey",
        plot_width=800, plot_height=600,
        x_range=Range1d(-0.5, 0.5), y_range=Range1d(-0.5, 0.5))
graph_renderer = from_networkx(
    G, nx.spring_layout, scale=1, center=(0, 0))
# here is the issue:
plot.add_tools(PointDrawTool(
    renderers=[graph_renderer], empty_value='black'))
plot.renderers.append(graph_renderer)
...

PointDrawTool是启用拖放的工具。以下文档说它需要渲染器(我假设:graph_renderer),但出现错误AttributeError: 'GraphRenderer' object has no attribute 'glyph'

一些指导表示赞赏。

1 个答案:

答案 0 :(得分:0)

当您替换

时,一切在Bokeh v1.1.0中都可以正常工作
plot.add_tools(PointDrawTool(renderers = [graph_renderer], empty_value='black'))

具有:

plot.add_tools(PointDrawTool(renderers = [graph_renderer.node_renderer], empty_value = 'black'))