1. 学ぶ
  2. /
  3. コース
  4. /
  5. Pythonで学ぶネットワーク分析入門

Connected

演習

行列プロットで可視化する

最初の「少し凝った」グラフ可視化手法として、行列プロットを試してみましょう。これには nxviz の matrix() 関数を使います。nxviz のトップレベルAPI関数はすべて同様に、plt.show() で表示できる matplotlib の Axes オブジェクトを返します。

nxviz はグラフを合理的に可視化するためのパッケージです。内部では、matrix 関数は nx.to_numpy_matrix(G) を利用し、グラフの行列表現を返します。ここで各ノードは1つの列かつ1つの行に対応し、2つのノード間にエッジがあれば値 1 で示されます。ただしこの過程では、weight メタデータのみが保持され、それ以外のメタデータは失われます。これを assert 文で確認します。

対応する nx.from_numpy_matrix(A) を使うと、NumPy 行列から素早くグラフを作成できます。デフォルトのグラフ型は Graph() です。DiGraph() にしたい場合は、create_using キーワード引数で指定します(例: nx.from_numpy_matrix(A, create_using=nx.DiGraph))。

最後に補足です。matplotlib.pyplot と networkx はそれぞれ plt と nx としてすでにインポート済みで、グラフ T も読み込まれています。簡潔さと高速化のため、ネットワークからはエッジを100本だけサブサンプリングしています。

指示

100 XP
  • nxviz から matrix をインポートします。
  • グラフ T を行列プロットで描画します。次の手順で行います。
    • nv.matrix() 関数に T を引数として渡し、m という名前の行列プロットを作成します。
    • plt.show() を使ってプロットを表示します。
  • グラフを行列表現に変換し、その行列から NetworkX 形式の有向グラフに戻す処理を行います。これはすでに用意されています。
  • 各ノードの category メタデータフィールドが失われていることを確認します。こちらも用意済みですので、"Submit Answer" を押して結果を確認してください。