networkx生成图时出现的错误
source = [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,3,4,5] target = [2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9,6,7,8,9] G = nx.DiGraph(zip(source,target)) # G.add_nodes_from(range(0,9)) # G.add_edges_from(zip(source,target)) print(nx.adjacency_matrix(G)) print(nx.to_numpy_matrix(G)) ps = nx.shell_layout(G) nx.draw(G,ps,with_labels=True,node_size=30) plt.show()
有时我为了图方便直接用边的方式来生成图,而不是先添加节点,再加边,偶然测试间发现了问题,上面是代码,下面是结果,结果与想象中不同,通过边来添加节点,会按照节点加入的时间来给节点编号,首先加入图的节点时逻辑上的0和2号节点,但是2号节点是第二个加入的节点所以它在图中的编号为1,之后又加入3,4,5,6,7,8,9节点,他们在图中的编号为,2,3,4,5,6,7,8,而二号节点是最后加入的节点,所有在图中的编号为9



正确的方法:
source = [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,3,4,5] target = [2,3,4,5,6,7,8,9,2,3,4,5,6,7,8,9,6,7,8,9] G = nx.DiGraph() G.add_nodes_from(range(0,9)) G.add_edges_from(zip(source,target)) print(nx.adjacency_matrix(G)) print(nx.to_numpy_matrix(G)) ps = nx.shell_layout(G) nx.draw(G,ps,with_labels=True,node_size=30) plt.show()


而生成的图相同,这就导致我们发现不了问题

浙公网安备 33010602011771号