纯JavaScript Graphviz等效

时间:2011-06-14 13:33:38

标签: javascript graphviz

有人知道GraphViz能够生成的方向流图的纯粹的基于Javascript的实现吗?我对漂亮的视觉效果输出不感兴趣,但计算出每个节点的最大深度,以及优化贝塞尔线的布局,以便在处理图形而不是树时最小化相交边的数量信息。我想在浏览器中运行此代码;我知道我可以轻松地将Graphviz作为扩展名嵌入到我的节点服务器中,甚至可以popen()将其嵌入到.dot格式的图形信息中。

作为参考,这是典型的GraphViz输出。注意元素如何堆叠和间隔开以允许连接线在节点之间传播,而不会相交(经常)或穿过节点。

enter image description here

6 个答案:

答案 0 :(得分:80)

看一下.dot画布渲染器的纯JavaScript实现:

http://ushiroad.com/jsviz/

图书馆没有记录 - 作者肯定应该更多地宣传和记录它(我会联系他,建议他把它放在github上,至少)。

更新:代码已被推送到github: https://github.com/gyuque/livizjs

更新(2013年2月14日):另一个竞争者出现了!任何对这个主题感兴趣的人都应该看看Viz.js的example pagegithub repo

答案 1 :(得分:35)

经过深远的搜寻,我终于找到了答案。

解决方案是有人使用llvm + emscripten将Graphviz编译为Javascript。这是链接:

http://viz-js.com/

来源可在以下位置找到: https://github.com/mdaines/viz.js

要简单地使用网页:

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

答案 2 :(得分:18)

在查看了所有选项之后,我发现基于jsviz和graphviz.js的viz.js(https://github.com/mdaines/viz.js/)实际上可以从网页上获得一个API,并且有足够的示例来理解。

答案 3 :(得分:11)

可以尝试将graphviz转换为javascript,就像为“PDF阅读器”示例所做的那样: https://github.com/kripken/emscripten

答案 4 :(得分:7)

这不是现成的graphviz替换,但d3.js是一个可以根据给定数据执行各种布局的库,并且是实现graphviz的一个很好的平台。

这是an example of force-directed layouts,这是graphviz所做的一种形式。

这是a speech about layouts,非常棒interactive slides

为了了解该项目,tutorials非常好。

答案 5 :(得分:5)

这是使用Emscripten

完成Graphviz到Javascript的交叉编译

https://github.com/bpartridge/graphviz.js