将 networkx 布局添加到全息图
add networkx layout to holoview graph
我在我的工作中应用了来自 this documentation 的 facebook 网络示例,以获取此代码:
edges_df = pd.read_csv('rel.csv', delimiter= ";")
nodes_df = pd.read_csv('monfichier.csv', delimiter= ";")
padding = dict(x=(-1.1, 1.1), y=(-1.1, 1.1))
fb_nodes = hv.Dataset(nodes_df, 'index')
fb_graph = hv.Graph((edges_df, fb_nodes)).redim.range(**padding)
colors = ['#000000'] + hv.Cycle('Category20').values
fb_graph.opts(color_index='age', show_frame=False,
xaxis=True, yaxis=True, node_size=10, edge_line_width=1, cmap=colors)
renderer = hv.renderer('bokeh')
plot = renderer.get_plot(fb_graph).state
show(plot)
它工作正常。但是得到的网络是一个没有特定布局的图形(如附图所示)。我想像在 networkx 中那样指定网络布局。怎么做 ?
我发现,这条指令:
hv.Graph.from_networkx(G, nx.layout.spring_layout).opts(tools=['hover'])
但是我没有找到如何在我的代码中使用它,因为我的 G 已经是一个全息视图而不是一个 networkx 图。
你有什么建议吗?
HoloViews 中有一个名为 layout_nodes
的函数,它可以将 networkx(和其他)布局应用于现有图形:
N = 8
node_indices = np.arange(N)
source = np.zeros(N)
target = node_indices
padding = dict(x=(-1.2, 1.2), y=(-1.2, 1.2))
simple_graph = hv.Graph(((source, target),)).redim.range(**padding)
hv.element.graphs.layout_nodes(simple_graph, layout=nx.spring_layout)
我在我的工作中应用了来自 this documentation 的 facebook 网络示例,以获取此代码:
edges_df = pd.read_csv('rel.csv', delimiter= ";")
nodes_df = pd.read_csv('monfichier.csv', delimiter= ";")
padding = dict(x=(-1.1, 1.1), y=(-1.1, 1.1))
fb_nodes = hv.Dataset(nodes_df, 'index')
fb_graph = hv.Graph((edges_df, fb_nodes)).redim.range(**padding)
colors = ['#000000'] + hv.Cycle('Category20').values
fb_graph.opts(color_index='age', show_frame=False,
xaxis=True, yaxis=True, node_size=10, edge_line_width=1, cmap=colors)
renderer = hv.renderer('bokeh')
plot = renderer.get_plot(fb_graph).state
show(plot)
它工作正常。但是得到的网络是一个没有特定布局的图形(如附图所示)。我想像在 networkx 中那样指定网络布局。怎么做 ?
我发现,这条指令:
hv.Graph.from_networkx(G, nx.layout.spring_layout).opts(tools=['hover'])
但是我没有找到如何在我的代码中使用它,因为我的 G 已经是一个全息视图而不是一个 networkx 图。 你有什么建议吗?
HoloViews 中有一个名为 layout_nodes
的函数,它可以将 networkx(和其他)布局应用于现有图形:
N = 8
node_indices = np.arange(N)
source = np.zeros(N)
target = node_indices
padding = dict(x=(-1.2, 1.2), y=(-1.2, 1.2))
simple_graph = hv.Graph(((source, target),)).redim.range(**padding)
hv.element.graphs.layout_nodes(simple_graph, layout=nx.spring_layout)