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

标签 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 将不会更改。 我怎样才能做到这一点?谢谢!!!

最佳答案

调用方法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已删除节点

关于python - 如何使用 NetworkX 创建两个相同的图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42117431/

相关文章:

python - 基于时间的 .rolling() 因 group by 而失败

python - 如何绘制动画图

graph - 来自 gnuplot 的专业外观图表

python - 图表中边缘标签的正确位置

python - 将 NetworkX 与 matplotlib.ArtistAnimation 结合使用

基于 True/False 值的 Python 优雅分配

PYTHONPATH 与 sys.path(重新加载)

python - 如何在链接数据结构上编写广度优先搜索算法?

python - 图的节点数不匹配

python - 在 Windows 中制作一个不可调整大小的窗口