本節主要講解如何快速使用內置的方法生成graph,官方的文檔在這里,里面包含了networkX的所有graph生成器,下面的內容只是我節選的內容,並將graph畫出來而已.
聲明,文中重復使用了以下代碼塊 ,現在統一注釋在這里:
- plt.subplot(221) #生成2*2的組圖,並且當前子圖在2*2矩陣的第一個位置.第二個位置是222
- plt.title('complete_graph') #子圖的標題
- nx.draw(G, with_labels=True, font_weight='bold') #將graph畫出來
- plt.axis('on') #需要坐標軸,以便框住graph
- plt.xticks([]) #橫坐標不需要刻度
- plt.yticks([]) #縱坐標不需要刻度
目錄:
注意:如果代碼出現找不庫,請返回第一個教程,把庫文件導入.
2.生成graph
2.1小圖圖集的生成器
- #graph_atlas的圖已經被定義,只需要按標號取出來就可以,下面將前10個取出來
- plt.subplots(2,5,figsize=(15,6))
- for ind in range(10):
- G.clear()
-
- G=nx.graph_atlas(ind)
- plt.subplot(2,5,ind+1)
- nx.draw(G,with_labels=True)
-
- #下面是設置圖片
- plt.axis('on')
- plt.title('graph_atlas_%s'%ind)
- plt.xticks([])
- plt.yticks([])
- plt.show()
- plt.close()

小圖圖集的生成器
2.2調用函數生成經典的graph
- plt.subplots(2,2,figsize=(15,6))
- K_5 = nx.complete_graph(5)
- plt.subplot(221)
- plt.title('complete_graph')
- nx.draw(K_5, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- K_3_5 = nx.complete_bipartite_graph(3, 5)
- plt.subplot(222)
- plt.title('complete_bipartite_graph')
- nx.draw(K_3_5, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- barbell = nx.barbell_graph(10, 10)
- plt.subplot(223)
- plt.title('barbell_graph')
- nx.draw(barbell, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- lollipop = nx.lollipop_graph(10, 20)
- plt.subplot(224)
- plt.title('lollipop_graph')
- nx.draw(lollipop, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()

經典的graph
2.3格子graph
- G.clear()
- plt.subplots(2,3,figsize=(15,6))
- #二維網格圖
- G=nx.grid_2d_graph(2,3)
- plt.subplot(2,3,1)
- nx.draw(G,with_labels=True)
- plt.title('grid_2d_graph')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #n維網格圖
- grid_graph = nx.grid_graph(dim=[1, 3, 4])
- plt.subplot(2,3,2)
- nx.draw(grid_graph,with_labels=True)
- plt.title('grid_graph')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #m×n的六角形格子圖。
- G=nx.hexagonal_lattice_graph(2,3)
- plt.subplot(2,3,3)
- nx.draw(G,with_labels=True)
- plt.title('hexagonal_lattice_graph')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #n維超立方體圖形。
- G=nx.hypercube_graph(3)
- plt.subplot(2,3,4)
- nx.draw(G,with_labels=True)
- plt.title('hypercube_graph')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #三角格子圖
- G=nx.triangular_lattice_graph(1,3)
- plt.subplot(2,3,5)
- nx.draw(G,with_labels=True)
- plt.title('hypercube_graph')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()

格子graph
2.4各種已經被命名的小graph
- plt.subplots(2,2,figsize=(15,6))
- petersen = nx.petersen_graph()
- plt.subplot(221)
- plt.title('petersen_graph')
- nx.draw(petersen, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- tutte = nx.tutte_graph()
- plt.subplot(222)
- plt.title('tutte_graph')
- nx.draw(tutte, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- maze = nx.sedgewick_maze_graph()
- plt.subplot(223)
- plt.title('sedgewick_maze_graph')
- nx.draw(maze, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- tet = nx.tetrahedral_graph()
- plt.subplot(224)
- plt.title('tetrahedral_graph')
- nx.draw(tet, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()

已經被命名的小graph
2.5使用隨機graph生成器
- plt.subplots(2,2,figsize=(15,6))
- er = nx.erdos_renyi_graph(10, 0.15)
- plt.subplot(221)
- plt.title('erdos_renyi_graph')
- nx.draw(er, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- ws = nx.watts_strogatz_graph(30, 3, 0.1)
- plt.subplot(222)
- plt.title('watts_strogatz_graph')
- nx.draw(ws, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- ba = nx.barabasi_albert_graph(10, 5)
- plt.subplot(223)
- plt.title('barabasi_albert_graph')
- nx.draw(ba, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- red = nx.random_lobster(10, 0.9, 0.9)
- plt.subplot(224)
- plt.title('random_lobster')
- nx.draw(red, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()

隨機graph生成器
2.6社交網絡
- plt.subplots(2,2,figsize=(15,6))
- #返回Zachary的空手道俱樂部圖。
- G.clear()
- G = nx.karate_club_graph()
- plt.subplot(1,2,1)
- nx.draw(G,with_labels=True)
- plt.title('karate_club_graph')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #戴維斯南方女性社交網絡。
- G.clear()
- G = nx.davis_southern_women_graph()
- plt.subplot(1,2,2)
- nx.draw(G,with_labels=True)
- plt.title('davis_southern_women_graph')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()

社交網絡
2.7社區
- plt.subplots(2,2,figsize=(15,6))
- er = nx.caveman_graph(3,3)
- plt.subplot(221)
- plt.title('caveman_graph')
- nx.draw(er, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- ws = nx.random_partition_graph([10,10,10],.25,.01)
- plt.subplot(222)
- plt.title('random_partition_graph')
- nx.draw(ws, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- ba = nx.ring_of_cliques(8, 4)
- plt.subplot(223)
- plt.title('ring_of_cliques')
- nx.draw(ba, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- red = nx.windmill_graph(4,5)
- plt.subplot(224)
- plt.title('windmill_graph')
- nx.draw(red, with_labels=True, font_weight='bold')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()

社區
2.8樹
- #返回隨機樹
- G.clear()
- G = nx.random_tree(10)
- nx.draw(G,with_labels=True)
- plt.title('random_tree')
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()

樹