Skip to content

建立 2026-09-14 更新 2026-09-14

四種圖類型

NetworkX 常用四個類別。先選對類型,再往裡面加資料。

類別 方向 平行邊 典型用途
Graph 無向 朋友關係、合作網路
DiGraph 有向 追蹤、引用、網頁連結
MultiGraph 無向 同一對節點有多種關係
MultiDiGraph 有向 多班次航線、多次交易

建立空圖

import networkx as nx

G = nx.Graph()
D = nx.DiGraph()
MG = nx.MultiGraph()
MD = nx.MultiDiGraph()

四種圖的新增節點/邊 API 幾乎相同,差在語意:無向圖的 (u, v)(v, u) 是同一條邊;有向圖則是兩條。

從現有資料一次建好

不必先建空圖再慢慢加。建構函式吃邊串列、鄰接字典,或另一張圖:

G = nx.Graph([(1, 2), (2, 3), (3, 1)])
D = nx.DiGraph(G)  # 每條無向邊會變成兩個方向

把無向圖轉成有向圖時,每條邊會複製成 u→vv→u。這常常不是你要的;若原始資料本身就有方向,請直接用 DiGraph

怎麼選

  1. 關係有沒有方向?有 → DiGraph(或 MultiDiGraph)。
  2. 同一對節點會不會出現多條邊?會 → Multi 系列。
  3. 其餘情況用 Graph 即可。

不要混用語意

Graph 不保存平行邊:你加第二次 (1, 2),只會覆蓋或忽略,不會變成兩條。若資料裡真的有多條關係,用 MultiGraph 並給每條邊一個 key。