関係グラフ ライブラリ比較デモ

同一データ(npm依存関係グラフ: 172ノード / 312エッジ)を5つのライブラリで実装比較。各プレビューに ×1 / ×10 / ×100 のスケール切替付き

vis-network

Canvas標準機能が豊富

物理シミュレーション・クラスタリング・編集UIまで標準装備の全部入り。設定オブジェクトを書くだけで動く、導入が最も簡単な定番。

force-graph

Canvas軽量・演出が得意

d3-forceベースの物理配置。ホバーで隣接ノードをハイライトするなど動きのある表現が少ないコードで書ける。3D/VR/React版も同系列。

Cytoscape.js

Canvas分析向き

レイアウトアルゴリズムとグラフ分析機能(中心性・最短経路など)が豊富。クリックで隣接以外を薄く表示。

Sigma.js v3

WebGL大規模向き

WebGL描画で大規模グラフに強い。レイアウト計算(ForceAtlas2)と描画が分離しており、スケールテストで両者の負荷の違いを体感できる。

D3.js (d3-force)

SVG実装自由度最高

すべて自作のリファレンス実装(今回はSVG。D3自体はCanvas/HTMLも可)。カスタマイズの上限が最も高いが実装量も最多。

vis-network 応用(クラスタリング+編集UI)

標準機能のみ

エコシステム/依存種別でのクラスタ化・末端の折りたたみ・ノード/エッジの追加削除UI。すべてvis-network標準装備で追加ライブラリなし。

共通操作: ドラッグ=移動 / ホイール=ズーム / クリック=選択(詳細パネル表示) / ダブルクリック=npmパッケージページを開く
スケール切替: ヘッダーのセレクタで ×1(172ノード)/ ×10(1,720)/ ×100(17,200)を切替。ステータス欄に表示までの実測時間が出ます。×10以上ではラベル・ホバー演出を省略しています
警告: ×100は実装方式の差が大きく出ます。特にD3(SVG実装)の×100はブラウザがクラッシュ同然になることがあります。未保存の作業があるブラウザでは実行しないでください
データ: 比較対象ライブラリ自身のnpm依存関係グラフ。tools/build-graph-from-lock.py でpackage-lock.jsonから自動生成(同じスキーマのJSONなら任意のデータに差し替え可能)
注意: 各ライブラリはCDN(unpkg / cdnjs)から読み込むため、表示にはインターネット接続が必要です