• 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

  • 相关阅读:
    HDU 1873 看病要排队(结构体+优先队列)
    优先队列
    栈和队列
    Light OJ 1214 Large Division (大数取模)
    LightOJ 1078 Integer Divisibility (同余定理)
    51nod 1513-3的幂的和(费马小定理+快速幂)
    51nod 1256 乘法逆元(扩展欧几里得)
    格式测试
    点Point 圆Circle 圆柱Cylinder的继承与派生
    JUC 并发编程--04 常用的辅助类CountDownLatch , CyclicBarrier , Semaphore , 读写锁 , 阻塞队列,CompletableFuture(异步回调)
  • 原文地址:https://www.cnblogs.com/wushaogui/p/9202283.html
Copyright © 2020-2023  润新知