Webアプリケーション内の対話型GraphVizグラフ
-
14-11-2019 - |
質問
Pythonを使ってDjango Webアプリケーションでいくつかの対話型グラフの視覚化をしようとしています。GraphVizが見つかり、Pydot(Python InterfaceからGraphVizのドット言語へのPython Interface)を使用して、静的グラフ(.pngイメージとして)を出力することができました。
しかし、私のグラフをよりインタラクティブにすることを目指して、ノードをクリックするとノードをクリックすることができ、ノードを別の場所にドラッグし、グラフをズームすることができます。
GraphVizでこれを行うことができる方法はありますか?あるいは一般に、フラッシュを使用する必要なしにDjangoアプリケーションのためのインタラクティブグラフを作成する方法はありますか?私はそれがそれに精通していないので、そしてまたかなり大きなデータセットを視覚化したいので、フラッシュを使いたくありません。
解決
JavaScript Infovis Toolkit 。それはすべてブラウザキャンバスに実装されているので、Flashは必要ありません.<canvas>
タグをサポートするまともなブラウザだけが必要です。グラフ視覚化例は、ここ、こことここ、その他のデモはこちら
他のヒント
D3JS のグラフビジュアライゼーションの例については、対話型ネットワークの視覚化方法を作る方法。
バックエンドの場合(グラフを表すJSONファイル以上のものを必要な場合は、大きい場合)、グラフ用のPythonモジュールを使用できます。 networkx 。
サイドノート、ここにhref="http://stared.github.io/wizualizacja-wolnych-lektur/polish_books_themes.html" real="noreferrer">私の単純なインタラクティブグラフ視覚化例:
あなたは単にドットとhtmlとのようなものをすることができます。
クライアント側のマップを生成し、あなたのPNG画像をオーバーレイします。(マップコードをHTMLページに挿入します。)
dot test.dot -Tpng -o test.png -Tcmapx -o test.map
.
SVGエクスポートは直接クリック可能です。
あなたがしようとしているものに適合するアプローチのようですブラウザのAN /またはJavaScriptでSVGを使用することができます。私は最新のブラウザのほとんどがSVGをサポートし、いくつかのかなりクールな対話型グラフを実行できると思います。サーバーは、グラフをレンダリングするために必要なデータポイントのJSONフィードを提供できます。私は利用可能なツールを手に知らないが、私はクライアント側のアプローチを通してフラッシュなしで構築されたいくつかのかなりクールなグラフデモを見ました。
代替として、ユーザが表示する可能性が高いグラフ画像の束を事前にレンダリングし、それからユーザがグラフと対話するにつれてそれらを取得するだけでよい。これは、グラフが頻繁に変わらない場合、およびユーザーがする変更の数が小さいが、グラフが変わるたびに再レンダリングする必要がある場合に機能する可能性があります。
あなたがずっと前にしようとしていることをしました。コンテキストはgnarly salesforceスキーマを視覚化していました。
最初のもの、GraphVizはプロットにのみ適しています。あなたはsvgを生成することができますが、私はそれを扱うことができませんでした。かなり(無駄なものであることが判明したこと)の努力の後。
私はこのJavaアプレットを見つけました Zgrviewer で十分で、アプレットがビットを感じている間私の味、それは非常によくクロスブラウザに働いた。
基本的には、ドットファイルを生成し、それらを考えたサービスを呼び出して(Dotty、Dottyは考えますか?) - visulazationアプレットはネイティブドットファイル形式を読み取ります。
私はまた、V2(これは決して起こったことがない)について考えたことを交わった - Ajax Control Toolkit - Seadragon 。
ASP.NETでコードを見たい場合は、投稿できます。