web-dev-qa-db-ja.com

WebアプリケーションでのインタラクティブGraphvizグラフ

Django Pythonを使用するWebアプリケーションでいくつかのインタラクティブなグラフの視覚化を作成しようとしています。Graphvizを見つけ、Pydotを使用してアプリケーション上に静的グラフ(.png画像として)を出力できました(Graphvizのドット言語へのPythonインターフェイス)。

ただし、マウスをグラフ上に移動したときにノードを強調表示したり、ノードをクリック可能にしたり、ノードを別の場所にドラッグしたり、グラフをズームしたりするなど、グラフをよりインタラクティブにしたいと考えています。

Graphvizでこれを行う方法はありますか?または、一般的に、Flashを使用せずにDjangoアプリケーションのインタラクティブなグラフを作成する方法はありますか?私はFlashにあまり慣れていないため、Flashを使用したくありません。かなり大きなデータセットを視覚化したい。

24
Akshay K

Javascript Infovis Toolkit を試してください。すべてブラウザキャンバスに実装されているため、Flashは必要なく、<canvas>タグをサポートする適切なブラウザのみが必要です。グラフの視覚化の例は herehere および here です。他のデモは here です。

18
Tamás

Canvizsource )があります。ただし、ノードはまだクリック可能ではありません(イメージマップを使用していた古いバージョンにありました。コードベースが変更され、JavaScriptを使用してクライアント側でレンダリングが行われているため、クリック可能なリンクはまだ有効になっていません。

これは私が見つけた最高のものですが、他にもたくさんあります。

mxGraph (無料ではありません)

12
Narsilou

グラフの視覚化には D3.js を使用できます(D3jsでのグラフの視覚化の例については ここを参照 を参照してください インタラクティブなネットワークの視覚化の作成方法 =)。

バックエンドの場合(グラフを表すためにjsonファイル以外のものが必要な場合-つまり、それが大きい場合)、Pythonモジュールを使用できます- NetworkX

補足:これが 私のインタラクティブなグラフの簡単な視覚化の例

enter image description here

9
Piotr Migdal

DOTとHTMLを使用するだけで、このようなことを非常に簡単に行うことができます。

クライアント側のマップを生成し、PNG画像の上にオーバーレイします。 (マップコードをHTMLページに挿入します。)

dot test.dot -Tpng -o test.png -Tcmapx -o test.map

SVGエクスポートは直接クリックできます。

3
johntait.org

あなたがやろうとしていることに合ったアプローチは、ブラウザやJavaScriptでsvgを使用することかもしれません。最近のブラウザのほとんどはSVGをサポートしており、かなりクールなインタラクティブグラフを作成できると思います。サーバーは、グラフのレンダリングに必要なデータポイントのJSONフィードを提供できます。利用可能なツールを手元で知りませんが、クライアント側のアプローチによってフラッシュなしで構築されたかなりクールなグラフのデモを見てきました。

別の方法として、ユーザーが表示する可能性のある一連のグラフ画像を事前にレンダリングし、ユーザーがグラフを操作するときにそれらをフェッチすることもできます。これは、グラフがそれほど頻繁に変更されず、ユーザーが行う変更の数が少ない場合に機能しますが、グラフが変更されるたびに再レンダリングする必要があります。

1
Joe J

私はあなたがやろうとしていることをずっと前にやった。コンテキストは危険なSalesForceスキーマを視覚化していました。

まず第一に、graphvizは、実際の描画ではなく、プロットにのみ適しています。 SVGを生成できますが、IEで動作させることができませんでした。相当な(無益であることが判明した)努力の後。

私はDIDこれを見つけるJavaアプレット ZGRViewer で十分です、そしてアプレットは私の好みのために少し古いと感じますが、それは非常にうまくいきましたクロスブラウザ。

私は基本的に、ドットファイルを生成するサービスを呼び出すプロセスを手動でコーディングし、それらを実行しました(dotty、is think?)-可視化アプレットはネイティブのドットファイル形式を読み取ります。

私はV2について考えたこともありましたが(これは決して起こらなかった)、これはAJAXコントロールツールキット- Seadragon の一部です)。

ASP.NETでコードを確認したい場合は、投稿できます。

1
Aaron Anodide