NetworkX系列教程(6)-對graph進行操作


graph生成后,除了有查看操作,還有移除等操作,還有其他更多操作,具體可以看這里.下面將比較graph操作前后的不同.

目錄:


注意:如果代碼出現找不庫,請返回第一個教程,把庫文件導入.

7.對圖進行操作

7.1移除某些節點和邊

  1. #G.clear() 
  2. #生成graph 
  3. G=nx.path_graph(8) 
  4.  
  5. plt.subplots(1,2,figsize=(15,5)) 
  6. plt.suptitle('移除部分節點和邊',fontproperties=myfont) 
  7.  
  8. #畫出未操作前的graph 
  9. plt.subplot(121) 
  10. nx.draw(G, with_labels=True, font_weight='bold') 
  11. plt.title('操作前',fontproperties=myfont) 
  12. plt.axis('on') 
  13. plt.xticks([]) 
  14. plt.yticks([]) 
  15.  
  16. #移除部分節點和邊,移除所有的點和邊使用G.clear(),不再單獨測試 
  17. G.remove_node(2) 
  18. G.remove_nodes_from([1,5]) 
  19. G.remove_edge(3, 4) 
  20.  
  21. #畫出操作后的graph 
  22. plt.subplot(122) 
  23. nx.draw(G, with_labels=True, font_weight='bold') 
  24. plt.title('操作后',fontproperties=myfont) 
  25. plt.axis('on') 
  26. plt.xticks([]) 
  27. plt.yticks([]) 
  28.  
  29. #顯示graph 
  30. plt.show() 

png
移除某些節點和邊

7.2合並graph

  1. # G1.clear() 
  2. # G2.clear() 
  3. # G3.clear() 
  4.  
  5. plt.subplots(1,3,figsize=(15,5)) 
  6. plt.suptitle('合並兩個圖',fontproperties=myfont) 
  7.  
  8. #生成graph1 
  9. G1=nx.path_graph(8) 
  10. plt.subplot(131) 
  11. nx.draw(G1, with_labels=True, font_weight='bold') 
  12. plt.title('圖1',fontproperties=myfont) 
  13. plt.axis('on') 
  14. plt.xticks([]) 
  15. plt.yticks([]) 
  16.  
  17. #生成graph2 
  18. G2=nx.complete_graph(3) 
  19. plt.subplot(132) 
  20. nx.draw(G2, with_labels=True, font_weight='bold') 
  21. plt.title('圖2',fontproperties=myfont) 
  22. plt.axis('on') 
  23. plt.xticks([]) 
  24. plt.yticks([]) 
  25.  
  26. #移除部分節點和邊,移除所有的點和邊使用G.clear(),不再單獨測試 
  27. G3=nx.disjoint_union(G1,G2) 
  28. plt.subplot(133) 
  29. nx.draw(G3, with_labels=True, font_weight='bold') 
  30. plt.title('合並后',fontproperties=myfont) 
  31. plt.axis('on') 
  32. plt.xticks([]) 
  33. plt.yticks([]) 
  34.  
  35. #顯示graph 
  36. plt.show() 

png
合並graph

7.3有向圖和無向圖的轉化

  1. #無向圖轉有向圖 
  2. plt.subplots(1,2,figsize=(15,3)) 
  3. plt.suptitle('無向圖轉換為有向圖',fontproperties=myfont) 
  4.  
  5. #定義無向圖 
  6. G = nx.path_graph(8) 
  7. #轉換為有向圖 
  8. G2=G.to_directed() 
  9.  
  10. #下面是可視化轉換前后的兩個圖 
  11. plt.subplot(121) 
  12. nx.draw(G, with_labels=True, font_weight='bold') 
  13. plt.title('無向圖',fontproperties=myfont) 
  14. plt.axis('on') 
  15. plt.xticks([]) 
  16. plt.yticks([]) 
  17.  
  18. plt.subplot(122) 
  19. nx.draw(G2, with_labels=True, font_weight='bold') 
  20. plt.title('有向圖',fontproperties=myfont) 
  21. plt.axis('on') 
  22. plt.xticks([]) 
  23. plt.yticks([]) 
  24. plt.show() 
  25. plt.close() 
  26.  
  27. #有向圖轉無向圖 
  28. G.clear() 
  29. G2.clear() 
  30. plt.subplots(1,2,figsize=(15,3)) 
  31. plt.suptitle('有向圖轉換為無向圖',fontproperties=myfont) 
  32.  
  33. #定義有向圖 
  34. G = nx.path_graph(8,create_using=nx.DiGraph()) 
  35. #轉換為無向圖 
  36. G2=G.to_undirected() 
  37.  
  38. #下面是可視化轉換前后的兩個圖 
  39. plt.subplot(121) 
  40. nx.draw(G, with_labels=True, font_weight='bold') 
  41. plt.title('有向圖',fontproperties=myfont) 
  42. plt.axis('on') 
  43. plt.xticks([]) 
  44. plt.yticks([]) 
  45.  
  46. plt.subplot(122) 
  47. nx.draw(G2, with_labels=True, font_weight='bold') 
  48. plt.title('無向圖',fontproperties=myfont) 
  49. plt.axis('on') 
  50. plt.xticks([]) 
  51. plt.yticks([]) 
  52. plt.show() 
  53.  
  54. # 注:可以看出無向圖轉有向圖時,得到的邊都是雙向 

png
無向圖轉換為有向圖

png
有向圖轉換為無向圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM