讀寫檔案
圖通常不是在程式裡手打出來的。NetworkX 能讀寫多種格式;跟 pandas 互轉則適合從 CSV/資料庫來的邊表。
邊列表(最簡單)
純文字,每行一條邊,可選第三欄當權重:
import networkx as nx
G = nx.read_weighted_edgelist("edges.txt", nodetype=int)
nx.write_weighted_edgelist(G, "edges_out.txt")
沒有權重時用 read_edgelist / write_edgelist。nodetype= 決定節點要轉成 int 還是保留字串。
GraphML 與 GEXF
這兩種是帶屬性的 XML 格式,Gephi、Cytoscape 都吃得下:
nx.write_graphml(G, "network.graphml")
H = nx.read_graphml("network.graphml")
nx.write_gexf(G, "network.gexf")
圖變複雜、又要給視覺化軟體時,優先 GraphML 或 GEXF,不要只用 edgelist。
從 pandas 建圖
邊表幾乎都是兩欄(或加上權重欄):
import pandas as pd
df = pd.DataFrame({
"source": ["A", "B", "C"],
"target": ["B", "C", "A"],
"weight": [1.0, 2.5, 0.8],
})
G = nx.from_pandas_edgelist(df, source="source", target="target", edge_attr="weight")
反向:nx.to_pandas_edgelist(G) 得到邊表。鄰接矩陣則用 nx.to_numpy_array(G) / nx.from_numpy_array(A)。
官方畫廊
更多格式(GML、JSON、sparse matrix)見 官方 Reading and writing graphs。