我相信您的问题类似于AttributeError中的问题:“ DiGraph”对象没有属性“
_node”
那里的问题是要研究的图形是在networkx 1.x中创建的,然后进行了腌制。然后,该图具有networkx 1.x对象具有的属性。我相信这也发生在您身上。
现在,您已经打开它,并且正在将networkx 2.x中的工具应用到该图。但是这些工具假定它是一个networkx 2.x
DiGraph,所有属性都应在2.x DiGraph中。特别是,它期望
_succ为1.x DiGraph没有的节点定义。
因此,我认为有两种方法可行:
短期解决方案 删除networkx 2.x,并替换为networkx 1.11。
这不是最佳选择,因为networkx
2.x更强大。同样,在2.x和1.x中都可以工作的代码(遵循您提到的迁移指南)将在1.x中效率较低(例如,在某些情况下1.x代码正在使用列表和2.x代码正在使用生成器)。
长期解决方案 将1.x图形转换为2.x图形(由于我的计算机目前没有1.x,因此我无法轻松进行测试-
如果有人尝试此操作,请在评论中注明是否有效,以及您的网络是否加权):
#you need commands here to load the 1.x graph G#import networkx as nx #networkx 2.0H = nx.DiGraph() #or Graph for someone else with this problem.H.add_nodes_from(G.nodes(data=True))H.add_edges_from(G.edges(data=True))
将
data=True用于确保任何边缘/节点的权重将被保留。
H现在是networkx 2.x
DiGraph,其边缘和节点具有任何属性
G。networkx 2.x命令应该可以在其上运行。
更好的长期解决方案 联系其他研究人员,并警告他/她该代码示例现在已过时。



