NetworkX系列教程(2)-graph生成器


本節主要講解如何快速使用內置的方法生成graph,官方的文檔在這里,里面包含了networkX的所有graph生成器,下面的內容只是我節選的內容,並將graph畫出來而已.

聲明,文中重復使用了以下代碼塊 ,現在統一注釋在這里:

  1. plt.subplot(221) #生成2*2的組圖,並且當前子圖在2*2矩陣的第一個位置.第二個位置是222 
  2. plt.title('complete_graph') #子圖的標題 
  3. nx.draw(G, with_labels=True, font_weight='bold') #將graph畫出來 
  4. plt.axis('on') #需要坐標軸,以便框住graph 
  5. plt.xticks([]) #橫坐標不需要刻度 
  6. plt.yticks([]) #縱坐標不需要刻度 

目錄:


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

2.生成graph

2.1小圖圖集的生成器

  1. #graph_atlas的圖已經被定義,只需要按標號取出來就可以,下面將前10個取出來 
  2. plt.subplots(2,5,figsize=(15,6)) 
  3. for ind in range(10): 
  4. G.clear() 
  5.  
  6. G=nx.graph_atlas(ind) 
  7. plt.subplot(2,5,ind+1) 
  8. nx.draw(G,with_labels=True) 
  9.  
  10. #下面是設置圖片 
  11. plt.axis('on') 
  12. plt.title('graph_atlas_%s'%ind) 
  13. plt.xticks([]) 
  14. plt.yticks([]) 
  15. plt.show() 
  16. plt.close() 

png
小圖圖集的生成器

2.2調用函數生成經典的graph

  1. plt.subplots(2,2,figsize=(15,6)) 
  2.  
  3. K_5 = nx.complete_graph(5) 
  4. plt.subplot(221) 
  5. plt.title('complete_graph') 
  6. nx.draw(K_5, with_labels=True, font_weight='bold') 
  7. plt.axis('on') 
  8. plt.xticks([]) 
  9. plt.yticks([]) 
  10.  
  11. K_3_5 = nx.complete_bipartite_graph(3, 5) 
  12. plt.subplot(222) 
  13. plt.title('complete_bipartite_graph') 
  14. nx.draw(K_3_5, with_labels=True, font_weight='bold') 
  15. plt.axis('on') 
  16. plt.xticks([]) 
  17. plt.yticks([]) 
  18.  
  19. barbell = nx.barbell_graph(10, 10) 
  20. plt.subplot(223) 
  21. plt.title('barbell_graph') 
  22. nx.draw(barbell, with_labels=True, font_weight='bold') 
  23. plt.axis('on') 
  24. plt.xticks([]) 
  25. plt.yticks([]) 
  26.  
  27. lollipop = nx.lollipop_graph(10, 20) 
  28. plt.subplot(224) 
  29. plt.title('lollipop_graph') 
  30. nx.draw(lollipop, with_labels=True, font_weight='bold') 
  31. plt.axis('on') 
  32. plt.xticks([]) 
  33. plt.yticks([]) 
  34.  
  35. plt.show() 

png
經典的graph

2.3格子graph

  1. G.clear() 
  2.  
  3. plt.subplots(2,3,figsize=(15,6)) 
  4. #二維網格圖 
  5. G=nx.grid_2d_graph(2,3) 
  6. plt.subplot(2,3,1) 
  7. nx.draw(G,with_labels=True) 
  8. plt.title('grid_2d_graph') 
  9. plt.axis('on') 
  10. plt.xticks([]) 
  11. plt.yticks([]) 
  12.  
  13. #n維網格圖 
  14. grid_graph = nx.grid_graph(dim=[1, 3, 4]) 
  15. plt.subplot(2,3,2) 
  16. nx.draw(grid_graph,with_labels=True) 
  17. plt.title('grid_graph') 
  18. plt.axis('on') 
  19. plt.xticks([]) 
  20. plt.yticks([]) 
  21.  
  22. #m×n的六角形格子圖。 
  23. G=nx.hexagonal_lattice_graph(2,3) 
  24. plt.subplot(2,3,3) 
  25. nx.draw(G,with_labels=True) 
  26. plt.title('hexagonal_lattice_graph') 
  27. plt.axis('on') 
  28. plt.xticks([]) 
  29. plt.yticks([]) 
  30.  
  31. #n維超立方體圖形。 
  32. G=nx.hypercube_graph(3) 
  33. plt.subplot(2,3,4) 
  34. nx.draw(G,with_labels=True) 
  35. plt.title('hypercube_graph') 
  36. plt.axis('on') 
  37. plt.xticks([]) 
  38. plt.yticks([]) 
  39.  
  40. #三角格子圖 
  41. G=nx.triangular_lattice_graph(1,3) 
  42. plt.subplot(2,3,5) 
  43. nx.draw(G,with_labels=True) 
  44. plt.title('hypercube_graph') 
  45. plt.axis('on') 
  46. plt.xticks([]) 
  47. plt.yticks([]) 
  48.  
  49. plt.show() 

png
格子graph

2.4各種已經被命名的小graph

  1. plt.subplots(2,2,figsize=(15,6)) 
  2.  
  3. petersen = nx.petersen_graph() 
  4. plt.subplot(221) 
  5. plt.title('petersen_graph') 
  6. nx.draw(petersen, with_labels=True, font_weight='bold') 
  7. plt.axis('on') 
  8. plt.xticks([]) 
  9. plt.yticks([]) 
  10.  
  11. tutte = nx.tutte_graph() 
  12. plt.subplot(222) 
  13. plt.title('tutte_graph') 
  14. nx.draw(tutte, with_labels=True, font_weight='bold') 
  15. plt.axis('on') 
  16. plt.xticks([]) 
  17. plt.yticks([]) 
  18.  
  19. maze = nx.sedgewick_maze_graph() 
  20. plt.subplot(223) 
  21. plt.title('sedgewick_maze_graph') 
  22. nx.draw(maze, with_labels=True, font_weight='bold') 
  23. plt.axis('on') 
  24. plt.xticks([]) 
  25. plt.yticks([]) 
  26.  
  27. tet = nx.tetrahedral_graph() 
  28. plt.subplot(224) 
  29. plt.title('tetrahedral_graph') 
  30. nx.draw(tet, with_labels=True, font_weight='bold') 
  31. plt.axis('on') 
  32. plt.xticks([]) 
  33. plt.yticks([]) 
  34.  
  35. plt.show() 

png
已經被命名的小graph

2.5使用隨機graph生成器

  1. plt.subplots(2,2,figsize=(15,6)) 
  2.  
  3. er = nx.erdos_renyi_graph(10, 0.15) 
  4. plt.subplot(221) 
  5. plt.title('erdos_renyi_graph') 
  6. nx.draw(er, with_labels=True, font_weight='bold') 
  7. plt.axis('on') 
  8. plt.xticks([]) 
  9. plt.yticks([]) 
  10.  
  11. ws = nx.watts_strogatz_graph(30, 3, 0.1) 
  12. plt.subplot(222) 
  13. plt.title('watts_strogatz_graph') 
  14. nx.draw(ws, with_labels=True, font_weight='bold') 
  15. plt.axis('on') 
  16. plt.xticks([]) 
  17. plt.yticks([]) 
  18.  
  19. ba = nx.barabasi_albert_graph(10, 5) 
  20. plt.subplot(223) 
  21. plt.title('barabasi_albert_graph') 
  22. nx.draw(ba, with_labels=True, font_weight='bold') 
  23. plt.axis('on') 
  24. plt.xticks([]) 
  25. plt.yticks([]) 
  26.  
  27. red = nx.random_lobster(10, 0.9, 0.9) 
  28. plt.subplot(224) 
  29. plt.title('random_lobster') 
  30. nx.draw(red, with_labels=True, font_weight='bold') 
  31. plt.axis('on') 
  32. plt.xticks([]) 
  33. plt.yticks([]) 
  34.  
  35. plt.show() 

png
隨機graph生成器

2.6社交網絡

  1. plt.subplots(2,2,figsize=(15,6)) 
  2.  
  3. #返回Zachary的空手道俱樂部圖。 
  4. G.clear() 
  5. G = nx.karate_club_graph() 
  6. plt.subplot(1,2,1) 
  7. nx.draw(G,with_labels=True) 
  8. plt.title('karate_club_graph') 
  9. plt.axis('on') 
  10. plt.xticks([]) 
  11. plt.yticks([]) 
  12.  
  13. #戴維斯南方女性社交網絡。 
  14. G.clear() 
  15. G = nx.davis_southern_women_graph() 
  16. plt.subplot(1,2,2) 
  17. nx.draw(G,with_labels=True) 
  18. plt.title('davis_southern_women_graph') 
  19. plt.axis('on') 
  20. plt.xticks([]) 
  21. plt.yticks([]) 
  22.  
  23. plt.show() 

png
社交網絡

2.7社區

  1. plt.subplots(2,2,figsize=(15,6)) 
  2.  
  3. er = nx.caveman_graph(3,3) 
  4. plt.subplot(221) 
  5. plt.title('caveman_graph') 
  6. nx.draw(er, with_labels=True, font_weight='bold') 
  7. plt.axis('on') 
  8. plt.xticks([]) 
  9. plt.yticks([]) 
  10.  
  11. ws = nx.random_partition_graph([10,10,10],.25,.01) 
  12. plt.subplot(222) 
  13. plt.title('random_partition_graph') 
  14. nx.draw(ws, with_labels=True, font_weight='bold') 
  15. plt.axis('on') 
  16. plt.xticks([]) 
  17. plt.yticks([]) 
  18.  
  19. ba = nx.ring_of_cliques(8, 4) 
  20. plt.subplot(223) 
  21. plt.title('ring_of_cliques') 
  22. nx.draw(ba, with_labels=True, font_weight='bold') 
  23. plt.axis('on') 
  24. plt.xticks([]) 
  25. plt.yticks([]) 
  26.  
  27. red = nx.windmill_graph(4,5) 
  28. plt.subplot(224) 
  29. plt.title('windmill_graph') 
  30. nx.draw(red, with_labels=True, font_weight='bold') 
  31. plt.axis('on') 
  32. plt.xticks([]) 
  33. plt.yticks([]) 
  34.  
  35. plt.show() 

png
社區

2.8樹

  1. #返回隨機樹 
  2. G.clear() 
  3. G = nx.random_tree(10) 
  4. nx.draw(G,with_labels=True) 
  5. plt.title('random_tree') 
  6. plt.axis('on') 
  7. plt.xticks([]) 
  8. plt.yticks([]) 
  9.  
  10. plt.show() 

png


免責聲明!

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



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