6.7.30
ネットワークグラフで関係性を力学レイアウトで描く
まとめ
- ノードとエッジで構成されるグラフデータを力学モデルで配置し、コミュニティや中心性を可視化する。
networkx+ matplotlib で Force-directed レイアウトを数行で描画できる。- ソーシャルネットワーク分析、共起関係、ナレッジグラフなど関係性データの探索に使う。
ネットワークグラフ(Force-directed Graph)はノード間の接続をバネ模型でシミュレーションし、関連の強いノードを近くに、弱いノードを遠くに配置する。コミュニティ構造が自然にクラスターとして現れる。
| |

読み方のポイント #
- ノードの大きさが次数(接続数)を表す。大きいノードほど多くの人とつながっている「ハブ」。
- 同じ色のノードが近くに集まっているほど、そのコミュニティ内の結束が強い。
- コミュニティ間をつなぐエッジ(ブリッジ)が少ない場合、部門間の情報共有が弱いことを示唆する。
いつ使うか #
- 適している場面: ノード数 10〜100 程度のグラフで、コミュニティ構造やハブを探索したいとき。共著ネットワーク、共起分析、依存関係グラフなど。
- 不向きな場面: ノード数が 500 を超えると描画が遅く、エッジが絡まって判読困難になる。
- 代替手段: 大規模グラフには Gephi や Cytoscape などの専用ツール。階層構造にはデンドログラムやサンバーストチャートが適切。
よくある失敗パターン #
- エッジの「ヘアボール」問題: ノード数やエッジ数が多すぎると毛玉状になって何も読めない。エッジの閾値フィルタリングやコミュニティごとの分離描画で対処する。
- レイアウトの不安定さ:
spring_layoutはランダムシードで結果が変わる。seedパラメーターを固定して再現性を確保する。
- サンキーダイアグラム — フローを帯の太さで表現
- 相関ヒートマップ — 変数間の関係を行列で表示
- デンドログラム — 階層的なグループ構造を可視化