マトリックスプロットによる可視化
最初の「高度な」グラフ可視化手法として、マトリックスプロットを試してみましょう。nxviz には、このための matrix() 関数が用意されています。この関数は、nxviz のトップレベル API 関数と同様に、plt.show() で表示できる matplotlib の axes オブジェクトを返します。
nxviz は、グラフを体系的に可視化するためのパッケージです。内部では、matrix 関数が nx.to_numpy_array(G) を使用しており、グラフを行列形式に変換します。この行列では、各ノードが 1 つの行と 1 つの列に対応し、2 つのノード間のエッジは値 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メタデータフィールドが失われていることを確認する処理も、すでに記述されています。'回答を送信' をクリックして結果を確認しましょう!
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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()