2012-09-04 50 views
10

我在找一个可以做图形布局的Javascript库/引擎。 (当我说布局时,我的意思是逻辑上很好地定位顶点。)我正在使用的图形都是m-ary树。 M通常不超过5或6,但在某些情况下可能会更大。Javascript图形布局引擎

我确实有一些我现在使用的Graphviz的节点程序,它的功能非常完美。问题是,在运行Web应用程序时,每次我想要布局时都必须向服务器发送请求。最好是,我想用Javascript编写一些可以在客户端快速运行的东西。它所需要做的就是提供布局信息(相对定位和什么)。我不需要它画到一个画布或使用SVG或任何东西,我感兴趣的是布局。

类似jQuery或RaphaelJS的库使用对我来说很好。我会和它一起工作。我只是寻找一些东西来加速一些事情。

此外,我会考虑编写我自己的,如果我能找到一个算法的很好的描述做布局。但我真的不想花太多时间。我现在有一些工作,所以让它在客户端只是一个奖金,而不是必要的。

回答

8

看看D3(数据驱动文件)

http://d3js.org/

他们有一些漂亮的图形布局。

+0

绝对是一个非常好的选择。我玩了一下,我很惊讶。这可能是我最终会用到的,但我会稍等一下,看看其他人是否有建议。 – GJK

2

http://sigmajs.org/是一个专门用于图形可视化的JS库。它使用Canvas而不是SVG。

+0

sigma.js的问题在于,您必须自行完成布局... – echox

+0

完全没有,ForceAtlas2布局可用,您可以编写自己的布局。我已经完成了几个布局。真正的问题是在Web浏览器上运行布局,这比使用编译语言慢得多。 – Seb

9

退房dagre https://github.com/cpettitt/dagre它现在使用D3并且做Graphviz的(Sugiyama)布局。

+0

爱,我一直在寻找一个正确的布局的Javascript库,这是第一个接近mar k;)感谢分享! –

2

在商业场景中,yFiles for HTML库应该值得关注。虽然它还具有自己的可视化和编辑功能,但是布局也可以单独使用,并且在编写时这些布局算法很可能是最灵活和最复杂的布局算法,如果您在寻找纯Javascript库,那么您会发现这些布局算法。当然,现在有些技术可以基本上将任何库(例如GraphViz库)编译为Javascript "blobs",但它们不提供真正的API,它们更像浏览器中的控制台应用程序。

在网上有很多demos可用,显示你可以用yFiles中的布局做什么。该实现提供了复杂的可配置版本的强制定向算法,分层(Sugiyama风格),正交,树形,圆形和纯边缘路由算法。 This overview显示了不同的可用模块,并且它们可以独立于查看器和编辑器部件使用。

完全披露:我为创建yFiles的公司工作,但因此我不代表我的雇主。