Django Pythonを使用するWebアプリケーションでいくつかのインタラクティブなグラフの視覚化を作成しようとしています。Graphvizを見つけ、Pydotを使用してアプリケーション上に静的グラフ(.png画像として)を出力できました(Graphvizのドット言語へのPythonインターフェイス)。
ただし、マウスをグラフ上に移動したときにノードを強調表示したり、ノードをクリック可能にしたり、ノードを別の場所にドラッグしたり、グラフをズームしたりするなど、グラフをよりインタラクティブにしたいと考えています。
Graphvizでこれを行う方法はありますか?または、一般的に、Flashを使用せずにDjangoアプリケーションのインタラクティブなグラフを作成する方法はありますか?私はFlashにあまり慣れていないため、Flashを使用したくありません。かなり大きなデータセットを視覚化したい。
Javascript Infovis Toolkit を試してください。すべてブラウザキャンバスに実装されているため、Flashは必要なく、<canvas>
タグをサポートする適切なブラウザのみが必要です。グラフの視覚化の例は here 、 here および here です。他のデモは here です。
グラフの視覚化には D3.js を使用できます(D3jsでのグラフの視覚化の例については ここを参照 を参照してください インタラクティブなネットワークの視覚化の作成方法 =)。
バックエンドの場合(グラフを表すためにjsonファイル以外のものが必要な場合-つまり、それが大きい場合)、Pythonモジュールを使用できます- NetworkX 。
補足:これが 私のインタラクティブなグラフの簡単な視覚化の例 :
DOTとHTMLを使用するだけで、このようなことを非常に簡単に行うことができます。
クライアント側のマップを生成し、PNG画像の上にオーバーレイします。 (マップコードをHTMLページに挿入します。)
dot test.dot -Tpng -o test.png -Tcmapx -o test.map
SVGエクスポートは直接クリックできます。
あなたがやろうとしていることに合ったアプローチは、ブラウザやJavaScriptでsvgを使用することかもしれません。最近のブラウザのほとんどはSVGをサポートしており、かなりクールなインタラクティブグラフを作成できると思います。サーバーは、グラフのレンダリングに必要なデータポイントのJSONフィードを提供できます。利用可能なツールを手元で知りませんが、クライアント側のアプローチによってフラッシュなしで構築されたかなりクールなグラフのデモを見てきました。
別の方法として、ユーザーが表示する可能性のある一連のグラフ画像を事前にレンダリングし、ユーザーがグラフを操作するときにそれらをフェッチすることもできます。これは、グラフがそれほど頻繁に変更されず、ユーザーが行う変更の数が少ない場合に機能しますが、グラフが変更されるたびに再レンダリングする必要があります。
私はあなたがやろうとしていることをずっと前にやった。コンテキストは危険なSalesForceスキーマを視覚化していました。
まず第一に、graphvizは、実際の描画ではなく、プロットにのみ適しています。 SVGを生成できますが、IEで動作させることができませんでした。相当な(無益であることが判明した)努力の後。
私はDIDこれを見つけるJavaアプレット ZGRViewer で十分です、そしてアプレットは私の好みのために少し古いと感じますが、それは非常にうまくいきましたクロスブラウザ。
私は基本的に、ドットファイルを生成するサービスを呼び出すプロセスを手動でコーディングし、それらを実行しました(dotty、is think?)-可視化アプレットはネイティブのドットファイル形式を読み取ります。
私はV2について考えたこともありましたが(これは決して起こらなかった)、これはAJAXコントロールツールキット- Seadragon の一部です)。
ASP.NETでコードを確認したい場合は、投稿できます。