用矩陣圖進行視覺化
現在來試試第一個較「進階」的圖形視覺化方法:矩陣圖。為此,nxviz 提供 matrix() 函式。這個函式與所有 nxviz 最上層 API 函式一樣,會回傳一個 matplotlib 的座標軸物件,你可以用 plt.show() 顯示。
nxviz 是用來以合理方式視覺化圖形的套件。在底層,matrix 函式會使用 nx.to_numpy_array(G),回傳圖形的矩陣形式。此時每個節點同時對應到 1 個欄與 1 個列,兩個節點之間若有邊,矩陣中的值為 1。不過,這麼做只會保留 weight 中繼資料;其他中繼資料都會遺失。你將用一個 assert 陳述式來驗證這件事。
對應的 nx.from_numpy_array(A) 可以讓你從一個 NumPy 陣列快速建立圖形。預設的圖形型別是 Graph();如果你想建立 DiGraph(),就需要用 create_using 這個關鍵字引數來指定,例如(nx.from_numpy_array(A, create_using=nx.DiGraph))。
最後補充:matplotlib.pyplot 與 networkx 已經分別以 plt 與 nx 匯入,圖形 T 也已經預先載入。為了簡化與加速,我們僅從網路中抽樣了 100 條邊。
本練習屬於課程
Python 網路分析入門
練習說明
- 從
nxviz匯入matrix。 - 以矩陣圖的方式繪製圖形
T。做法如下:- 使用
nv.matrix()並以T作為引數,建立名為m的矩陣圖。 - 使用
plt.show()顯示圖表。
- 使用
- 將圖形轉為矩陣格式,再把矩陣轉回 NetworkX 的形式為有向圖。這部分已替你完成。
- 檢查每個節點的
category中繼資料欄位是否遺失。這部分也已替你完成,直接按下「Submit Answer」查看結果即可!
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Import nxviz
____
# Create the matrix plot: m
m = ____
# Display the plot
____
# Convert T to a matrix format: A
A = nx.to_numpy_array(T)
# Convert A back to the NetworkX form as a directed graph: T_conv
T_conv = nx.from_numpy_array(A, create_using=nx.DiGraph())
# Check that the `category` metadata field is lost from each node
for n, d in T_conv.nodes(data=True):
assert 'category' not in d.keys()