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

转载于:https://www.cnblogs.com/wushaogui/p/9202283.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值