開始使用免費開始

用矩陣圖進行視覺化

現在來試試第一個較「進階」的圖形視覺化方法:矩陣圖。為此,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.pyplotnetworkx 已經分別以 pltnx 匯入,圖形 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()
編輯並執行程式碼