純粋なJavaScript Graphvizと同等のもの[終了]


139

GraphVizが生成できる方向性フローダイアグラムの純粋なJavascriptベースの実装を知っている人はいますか?かなり視覚的な出力には興味がありませんが、ツリーではなくグラフを処理しているときに交差するエッジの数を最小限に抑えるように最適化されたベジエ線のレイアウトとともに、各ノードの最大深度を計算する計算情報の。このコードをブラウザー内で実行したいと思います。私はGraphvizを拡張機能としてNodeサーバーに簡単に埋め込むことができ、さらにpopen().dotフォーマットでグラフ情報をストリーミングすることができることを知っています。

参考までに、ここに典型的なGraphViz出力を示します。要素がどのように積み重ねられ、間隔が空いているかを確認し、接続線がノード間で交差したり(非常に頻繁に)通過したりすることなくノード間を移動できるようにします。

ここに画像の説明を入力してください


GraphVizに慣れていない人のために、そのような図の例はありますか?
マットボール


3
多分-チェックアウトする。多くのコメントと応答は、GraphVizとはまったく違う、またはGraphViz出力を描画することしかできないが、それ自体はレイアウトを作成できないグラフ作成ツールを指しています。
アーメンテージ2011年

回答:


84

.dotキャンバスレンダラーのこの純粋なJavaScript実装を見てください。

http://ushiroad.com/jsviz/

ライブラリは文書化されていません-著者は間違いなくそれを公表して文書化する必要があります(少なくともgithubに置くことを提案するために彼に連絡します)。

更新:コードがgithubにプッシュされました:https : //github.com/gyuque/livizjs

更新(2013年2月14日):別の候補が発生しました!このテーマに興味のある方は、必ずViz.jsのサンプルページとgithub repoをご覧ください

アップデート(2020年 7 月16日):(7年後)http://webgraphviz.com/もすばらしい!:-)


1
このプロジェクトはすばらしく見え、おそらく私が目にしたすべての中で最も優れたソリューションですが、それを使用する方法を理解するには、ソースを掘り下げる必要があります。コードはかなり合理的であるように見えるので、それほど悪くはないかもしれません。
captncraig

これまでのところ、これは元の質問で探していたものに最も近いものです。これは単なるレンダラーではなく、有向グラフの計算方法も知っています。バックエンドでDOTをどこかで実行していますか、それともグラフ生成アルゴリズム全体をブラウザで実行していますか?
アーメンテージ

1
@Armentage、完全にブラウザーで実行されています。emscriptenのおかげで、GraphvizはJavaScriptにコンパイルされました。ソースコードは、可能な限りドキュメント化されていませんが、幸いなことに(Twitterと電子メールで著者を悩ませた後);-) ここから入手できます。プロジェクトをforkして使いやすいAPIを作成することが、最初のすばらしいステップです。
グレッグ・サデツキー

5
候補者のリストにGraph Draculaライブラリを追加したかっただけです。ここでデモを見ることができます。グラフを計算して表示します(Raphaelを使用)。コードは短くてきれいです。
グレッグサデツキー

Livizjsは優れたツールですが、「クラスター」などの完全な言語をサポートしていないことに注意してください
SirLenz0rlot

37

遠くを調べた後、私はようやく答えを見つけました。

解決策は、llvm + emscriptenを使用して、GraphvizをJavascriptにクロスコンパイルしたことです。ここにリンクがあります:

http://viz-js.com/

ソースは、https//github.com/mdaines/viz.jsにあります。

そして単にウェブページを使用するために:

var graphviz_text = ...;
document.body.innerHTML += Viz(graphviz_text, "svg");

これもまさに私が探していたものです
RobAu 2013

6
更新:viz.jsのフックがどのように楽しくて簡単かを示すデモサイトを作りました!www.webgraphviz.comで確認してください
ザカリーヴォーヒース2013

提供されたgithubリンクが壊れています
Jaime



11

「PDFリーダー」の例の場合と同じように、graphvizをjavascriptに変換してみることができます。https//github.com/kripken/emscripten


これはめちゃくちゃ素晴らしい提案です。私は自分でコードをJSに変換しようと考えていましたが、このllvmのトリックは美しい狂気です!
Armentage

私は実際にこれをいくつか試してみましたが、emscriptenはまだかなり若いので、ドキュメントは簡潔です。注目に値するすばらしいプロジェクトであり、それがいかに多くの力を提供できるかがわかります。しかし、今あなたがそれを書いた人でないなら、それはやや扱いにくいです。
シンセサイザー

8

これは既製のgraphvizの置き換えではありませんが、d3.jsは特定のデータからさまざまなレイアウトを実行できるライブラリであり、graphvizを実装するための優れたプラットフォームになります。

ここだ力指向のレイアウトの例は、graphvizが行うことの1つの形式である。

ここでは、めちゃくちゃ素晴らしいインタラクティブなスライドを使ったレイアウトについてのスピーチです。

プロジェクトを理解するには、チュートリアルが非常に役立ちます。


1
github.com/cpettitt/dagre-d3はJavaScriptでDOTダイアグラムを実装します。cpettitt.github.io/project/dagre-d3/latest/demo/…でデモを試すことができます。
Arthur2e5 2017年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.