如何使用NetworkX创建两个相同的图形

时间:2017-02-08 15:40:08

标签: python graph networkx

例如:

g1 = nx.DiGraph()    
g1.add_edge(1,1,w = 1)    
g1.add_edge(1,2,w = 1)    

g1.add_edge(1,3,w = 2)    
g1.add_edge(2,2,w = 2)   

g2 = g    
print g2.predecessors(2)  #[1, 2]

g1.remove_node(1)    
print g2.predecessors(2)  #[2]

当我删除g1中的节点1时,g2也会受到影响。 我想创建与g1相同的图形g2,但是当我对g1进行更改时,g2不会改变。 我怎样才能做到这一点?感谢!!!

1 个答案:

答案 0 :(得分:1)

在图表上调用方法copy(),这样您就不会参考:

In [41]:
g1 = nx.DiGraph()    
g1.add_edge(1,1,w = 1)    
g1.add_edge(1,2,w = 1)    
​
g1.add_edge(1,3,w = 2)    
g1.add_edge(2,2,w = 2)   
​
g2 = g1.copy()    
print( 'before g2', g2.predecessors(2) ) #[1, 2]
​
g1.remove_node(1)    
print ('after g2', g2.predecessors(2))  #[2]
print ('g1 graph ', g1.predecessors(2))  #[2]

before g2 [1, 2]
after g2 [1, 2]
g1 graph  [2]

您可以看到图g2未经修改,而g1已移除某个节点