纯JavaScript JavaScript Graphviz等效
有没有人知道GraphViz能够生成的定向stream程图的基于Javascript的纯粹的实现? 我对漂亮的视觉输出不感兴趣,但计算出每个节点的最大深度,以及贝塞尔线的布局,这些贝塞尔线被优化以最小化处理graphics而不是树时的相交边的数量的信息。 我想在浏览器中运行这个代码; 我意识到,我可以轻松地将Graphvizembedded到我的Node服务器中作为扩展,甚至可以popen()
,并以.dot
格式在graphics信息上进行stream式处理。
作为参考,这里是一个典型的GraphViz输出。 请注意元素是如何叠加和分开的,以允许连接线在节点之间传播,而不会相交(非常频繁)或通过节点。
看一下.dotcanvas渲染器的纯JavaScript实现:
图书馆没有logging – 作者绝对应该公布和更多的文档(我会联系他build议他把它放在github,至less)。
更新 :代码已被推送到github: https : //github.com/gyuque/livizjs
更新(14/2/2013) :另一个竞争者已经出现! 任何对这个主题感兴趣的人都应该看看Viz.js的例子页面和github回购 。
经过深远的search,我终于find了答案。
解决scheme是有人使用llvm + emscripten将Graphviz编译为Javascript。 链接在这里:
来源可以在https://github.com/mdaines/viz.jsfind
并简单地获得一个网页的使用:
var graphviz_text = ...; document.body.innerHTML += Viz(graphviz_text, "svg");
在查看所有选项后,我发现基于jsviz和graphviz.js的viz.js( https://github.com/mdaines/viz.js/ )实际上具有可从网页使用的API,并且有足够的示例理解。
人们可以尝试将graphviz转换为JavaScript,就像它为'PDF阅读器'的例子: https : //github.com/kripken/emscripten
这不是一个现成的graphvizreplace,但d3.js是一个库,可以从给定的数据做不同的布局,并将是一个伟大的平台,实现graphviz上。
这是一个强制指导布局的例子,它是graphviz所做的一种forms。
这里有一个关于布局的演讲,里面有非常棒的互动幻灯片 。
为了了解这个项目,这个教程非常好。
以下是使用Emscripten完成的Graphviz到Javascript的交叉编译