graph生成后,除了有查看操作,還有移除等操作,還有其他更多操作,具體可以看這里.下面將比較graph操作前后的不同.
目錄:
注意:如果代碼出現找不庫,請返回第一個教程,把庫文件導入.
7.對圖進行操作
7.1移除某些節點和邊
- #G.clear()
- #生成graph
- G=nx.path_graph(8)
- plt.subplots(1,2,figsize=(15,5))
- plt.suptitle('移除部分節點和邊',fontproperties=myfont)
- #畫出未操作前的graph
- plt.subplot(121)
- nx.draw(G, with_labels=True, font_weight='bold')
- plt.title('操作前',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #移除部分節點和邊,移除所有的點和邊使用G.clear(),不再單獨測試
- G.remove_node(2)
- G.remove_nodes_from([1,5])
- G.remove_edge(3, 4)
- #畫出操作后的graph
- plt.subplot(122)
- nx.draw(G, with_labels=True, font_weight='bold')
- plt.title('操作后',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #顯示graph
- plt.show()

移除某些節點和邊
7.2合並graph
- # G1.clear()
- # G2.clear()
- # G3.clear()
- plt.subplots(1,3,figsize=(15,5))
- plt.suptitle('合並兩個圖',fontproperties=myfont)
- #生成graph1
- G1=nx.path_graph(8)
- plt.subplot(131)
- nx.draw(G1, with_labels=True, font_weight='bold')
- plt.title('圖1',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #生成graph2
- G2=nx.complete_graph(3)
- plt.subplot(132)
- nx.draw(G2, with_labels=True, font_weight='bold')
- plt.title('圖2',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #移除部分節點和邊,移除所有的點和邊使用G.clear(),不再單獨測試
- G3=nx.disjoint_union(G1,G2)
- plt.subplot(133)
- nx.draw(G3, with_labels=True, font_weight='bold')
- plt.title('合並后',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- #顯示graph
- plt.show()

合並graph
7.3有向圖和無向圖的轉化
- #無向圖轉有向圖
- plt.subplots(1,2,figsize=(15,3))
- plt.suptitle('無向圖轉換為有向圖',fontproperties=myfont)
- #定義無向圖
- G = nx.path_graph(8)
- #轉換為有向圖
- G2=G.to_directed()
- #下面是可視化轉換前后的兩個圖
- plt.subplot(121)
- nx.draw(G, with_labels=True, font_weight='bold')
- plt.title('無向圖',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.subplot(122)
- nx.draw(G2, with_labels=True, font_weight='bold')
- plt.title('有向圖',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()
- plt.close()
- #有向圖轉無向圖
- G.clear()
- G2.clear()
- plt.subplots(1,2,figsize=(15,3))
- plt.suptitle('有向圖轉換為無向圖',fontproperties=myfont)
- #定義有向圖
- G = nx.path_graph(8,create_using=nx.DiGraph())
- #轉換為無向圖
- G2=G.to_undirected()
- #下面是可視化轉換前后的兩個圖
- plt.subplot(121)
- nx.draw(G, with_labels=True, font_weight='bold')
- plt.title('有向圖',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.subplot(122)
- nx.draw(G2, with_labels=True, font_weight='bold')
- plt.title('無向圖',fontproperties=myfont)
- plt.axis('on')
- plt.xticks([])
- plt.yticks([])
- plt.show()
- # 注:可以看出無向圖轉有向圖時,得到的邊都是雙向

無向圖轉換為有向圖

有向圖轉換為無向圖