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

posted @ 2018-06-20 09:43  好奇不止,探索不息  阅读(8468)  评论(0编辑  收藏  举报