web-dev-qa-db-ja.com

基本的なノード/エッジフィルタリングを備えたインタラクティブなGraphvizビューア

Graphvizリソースページ 、および質問 1 および 2 を調べましたが、それでも具体的な答えが見つかりませんでした。私のユースケースは、ソフトウェアコンポーネント(インストール可能なパッケージなど)間の依存関係を参照することです。これに伴う1つの特定の特徴は、いくつかの共通ノードが多くのエッジのターゲットであるということです。たとえば、ほとんどすべての実行可能パッケージはlibcに依存しています。

その特性に基づいて、次の機能を備えたビューア/ライブラリが必要です。

  1. Graphvizの「ドット」レイアウトアルゴリズムを使用します(さまざまなライブラリに豊富にある強制レイアウトアルゴリズムでは、説明したユースケースに優れたレイアウト品質が提供されません)。
  2. グラフ内の一部のノードをインタラクティブに無効化/再度有効化します(上記のlibcの例)。
  3. 特定のノードからのすべてのエッジをインタラクティブに無効化/再有効化します(たとえば、libpngはlibzに依存しますが、それは明らかであり、ビューが乱雑にならないように無効にすることができます)。
  4. あるノードでグラフを再ルート化し(そのノードから到達可能なノードのみを含むサブグラフを表示)、「ズームバック」してグラフを完成させます。

理想的には、これはJavascriptライブラリであり、より複雑な操作機能を簡単に実装できます。上記の基本的な表示動作がすぐに利用できることが重要です。繰り返しになりますが、そのようなものは見つかりませんでした。多くのソリューションは、静的ビューアー、またはノードをドラッグできる「フリーフォームエディター」ですが、十分に高レベルで有用な行動。

最後に、そのようなソリューションが存在しない場合は、これらの機能を実装するための最適なフレームワークの提案を歓迎します。

18
pfalcon

Gephi、 https://gephi.org/ 、もちろん、Graphvizドットを含む多くのグラフ形式をサポートしています。ノードまたはエッジをフィルタリングでき、ある種の分析機能を備えています。

14
frankli22586

JoséFonsecaの xdot.py は非常にクールであることがわかりましたPythonそしてGraphvizファイルを表示するためのCairoベースのアプリケーション。なぜそれがインタラクションサポートで少しアドホックであり、箱から出してそれ以上の拡張性を許可しないのですか?私は現在それをハッキングしています https://github.com/pfalcon/xdot.py

更新:上記の機能の概念実証実装をfiltered-viewer.pyとしてコミットしました。後で名前が変更される可能性があります。

4
pfalcon