如何解决网络图错误:无法验证 StaticLayoutProvider(id='1058', ...).graph_layout:
我设法解决了我的一半问题,所以我修改了这篇文章,我现在遇到的唯一问题是一个错误类型,没有找到解决方案的记录,如果有人知道为什么会发生这个错误并且可以给我一些建议或一些链接引导我找到解决方案,将不胜感激。
我的节点是来自 Dataframe 的列表列表,我的边来自一个元组列表。
我知道以下错误可能是由于我的节点和边涉及 G=nx.Graph(), 但是如果我只需要一个静态图,它们运行良好,但是当我需要一个动态图时不知道如何修改它。
以下是我的部分代码:
...
nodelist = [A,B,C,D,E,F,G,H,N,O,P,Q,R]
#create empty graph
G = nx.Graph()
node_list = []
for sublist in nodelist:
for item in sublist:
node_list.append(item)
for i in node_list:
G.add_node(i)
G.nodes()
edges = set(AB+BC+CN+NE+ED+DO+OP+PQ+QH+HG+GF+FR+BE+HR)
# edges
G.add_edges_from(edges)
pos = nx.fruchterman_reingold_layout(G,scale=4)
#nx.draw_networkx(G,pos=pos,nodelist=nodelist[0],with_labels=False,node_size=10,node_color='#FF0000',font_size=5,width=2)
...
plot = Plot(plot_width=400,plot_height=400,x_range=Range1d(-1.1,1.1),y_range=Range1d(-1.1,1.1))
title = "track-dynamic graph"
HOVER_TOOLTIPS = [("a","@index"),("b","@type")]
plot = figure(tooltips = HOVER_TOOLTIPS,tools="pan,wheel_zoom,save,reset",active_scroll='wheel_zoom',x_range=Range1d(-10.1,10.1),y_range=Range1d(-10.1,title=title)
network_graph = from_networkx(G,nx.spring_layout,scale=10,center=(0,0))
network_graph.node_renderer.glyph = Circle(size=3,fill_color='blue')
network_graph.edge_renderer.glyph = MultiLine(line_alpha=0.5,line_width=1)
plot.renderers.append(network_graph)
show(plot)
ValueError: 无法验证 StaticLayoutProvider(id='1058',...).graph_layout: 期望是 Dict(Either(String,Int),Seq(Any)) 的元素,得到 {'6600d5067598ac904ac8e1ed3d3760c0': array( [-1.67995763,3.53275585]),'d151da7d698cd5a6f6957ca77549ebbe': 数组([-5.69608212,0.91764808])...
解决方法
您在调用 from_networkx
时没有提供所有必需的参数。您必须提供 layout_function
参数,该参数控制您想要的布局类型。您可以传递任何布局函数 built in to networkx。在散景 user's guide for networkx integration 中明确演示了提供此所需参数,例如
import networkx as nx
graph = from_networkx(G,nx.spring_layout,...) # use spring_layout
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。