有人知道GraphViz能够生成的方向流图的纯粹的基于Javascript的实现吗?我对漂亮的视觉效果输出不感兴趣,但计算出每个节点的最大深度,以及优化贝塞尔线的布局,以便在处理图形而不是树时最小化相交边的数量信息。我想在浏览器中运行此代码;我知道我可以轻松地将Graphviz作为扩展名嵌入到我的节点服务器中,甚至可以popen()
将其嵌入到.dot
格式的图形信息中。
作为参考,这是典型的GraphViz输出。注意元素如何堆叠和间隔开以允许连接线在节点之间传播,而不会相交(经常)或穿过节点。
答案 0 :(得分:80)
看一下.dot画布渲染器的纯JavaScript实现:
图书馆没有记录 - 作者肯定应该更多地宣传和记录它(我会联系他,建议他把它放在github上,至少)。
更新:代码已被推送到github: https://github.com/gyuque/livizjs
更新(2013年2月14日):另一个竞争者出现了!任何对这个主题感兴趣的人都应该看看Viz.js的example page和github repo。
答案 1 :(得分:35)
经过深远的搜寻,我终于找到了答案。
解决方案是有人使用llvm + emscripten将Graphviz编译为Javascript。这是链接:
来源可在以下位置找到: 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的交叉编译