networkx基礎用法:新增節點、新增邊、刪除節點、刪除邊、計算度、賦權重

水母君98發表於2020-09-24

涉及到的方法:

正常安裝方法

pip3 install networkx

如果是pip使用者就把pip3改成pip

如果報了一堆錯看這裡↓
networkx安裝教程

新增節點和邊的多種方法以及顯示

import networkx as nx

G = nx.Graph() #建立一個空的圖形

G.add_node(1)  #新增節點1

G.add_nodes_from([2, 3]) #新增邊(2,3)

print(G.nodes)# 列印出所有的節點資訊
G.add_edge(1,2) #新增邊的另一種方法(1,2)
e = (2, 3)
G.add_edge(*e)   # unpack edge tuple* 
G.add_edges_from([(1, 2), (1, 3)]) #新增邊的第三種方法,補全三角形對邊
G.add_node("spam")            # adds node "spam"
G.add_nodes_from("spam")  # adds 4 nodes: 's', 'p', 'a', 'm'  把spam拆開4個點新增進去

print(G.nodes) # 列印出所有的節點資訊

G.add_edge(3, 'm')  #給3和m之間新增一個邊
#At this stage the graph G consists of 8 nodes and 3 edges, as can be seen by:
G.number_of_nodes() #計算節點數量
G.number_of_edges() #計算邊的數量
print(G.number_of_nodes())  #列印出有多少個節點

#Four basic graph properties facilitate reporting: G.nodes, G.edges, G.adj and G.degree.
list(G.nodes)  #用list顯示節點列表

結果:在這裡插入圖片描述
list只能顯示最後一個list出的東西。

list(G.edges)
list(G.adj[1]) 
G.degree[1]  

在這裡插入圖片描述

刪去節點和邊

G.remove_node(2)
G.remove_nodes_from("spam")
list(G.nodes)

在這裡插入圖片描述
注意刪掉節點2之後,所有和2相關的邊會消失。
remove_nodes_from()會把所有括號裡形成的子節點s,p,a,m也刪去。但是生成時並不會在子母之間形成邊。

在這裡插入圖片描述
如果這麼寫是錯誤的,查了一下邊列表,居然是
在這裡插入圖片描述
太迷了。

再次執行又正常了
在這裡插入圖片描述
後來發現其實是每一個cell執行的順序被我點亂了。在jupyter裡及時已經執行完前面的但是每個cell不可以前後隨便亂點。
重頭執行一遍後:

確認是2已經被刪除,且和2相關的邊也一併被刪除

繼續↓
給邊增添value

G[1][3]['color'] = "blue"
G.edges[1, 2]['color'] = "red"

也可以在建立的時候就加好。

 >>> FG = nx.Graph()
 >>> FG.add_weighted_edges_from([(1, 2, 0.125), (1, 3, 0.75), (2, 4, 1.2), (3, 4, 0.375)])
 >>> for n, nbrs in FG.adj.items():
                    for nbr, eattr in nbrs.items():
                          wt = eattr['weight']
                          if wt < 0.5: print('(%d, %d, %.3f)' % (n, nbr, wt))

效果:
在這裡插入圖片描述

相關文章