我们目前拥有动态更新的网络图表,其中 1,500个节点和 2,000个边缘。它在不断发展。我们当前的布局引擎使用Prefuse - 特别是力导向布局 - 使用大量服务器需要大约10分钟才能获得漂亮,稳定的布局。
我看了一点GraphViz的sfpd算法,但还没有测试过......
我应该考虑更快的替代方案吗?
x, y
放在节点上。提前致谢,如果您需要更具体的信息,请发表评论!
编辑:我特别想在布局引擎选项之间寻找速度比较。基准,具体例子,或仅仅是个人经验就足够了!
答案 0 :(得分:15)
我写了一个基于JavaScript的图形绘制库VivaGraph.js。
它计算布局并使用2K +顶点渲染图形,在~10-15秒内渲染8.5K边缘。如果你不需要渲染部分,它应该更快。
以下是展示其实际效果的视频:WebGL Graph Rendering With VivaGraphJS。
可以使用在线演示here。 WebGL需要查看演示,但不需要计算图形布局。该库也可以在node.js下工作,因此可以用作服务。
API使用示例(仅限布局):
var graph = Viva.Graph.graph(),
layout = Viva.Graph.Layout.forceDirected(graph);
graph.addLink(1, 2);
layout.run(50); // runs 50 iterations of graph layout
// print results:
graph.forEachNode(function(node) { console.log(node.position); })
希望这会有所帮助:)
答案 1 :(得分:6)
我会看看OGDF,特别是http://www.ogdf.net/doku.php/tech:howto:frcl 我没有使用过OGDF,但我知道Fast Multipole Multilevel是一个很好的高性能算法,当你处理涉及强制定向布局的运行时类型以及你想要的节点数时,这很重要。 除了其他原因之外,为什么算法很棒:快速多极方法。快速多极方法是矩阵乘法近似,它将矩阵乘法的O()运行时间减少到近似程度。理想情况下,你会得到类似这样的代码:http://mgarland.org/files/papers/layoutgpu.pdf但我无法在任何地方找到它;也许CUDA解决方案无论如何都不在你的小巷里。
祝你好运。答案 2 :(得分:6)
Gephi Toolkit可能就是您所需要的:一些布局速度非常快且质量很好:http://gephi.org/toolkit/
30秒到2分钟足以布置这样的图表,具体取决于您的机器。 您可以使用ForAtlas布局或Yifan Hu Multilevel布局。
对于非常大的图形(+ 50K节点和500K链接),OpenOrd布局将
答案 3 :(得分:3)
在商业场景中,您可能还想查看yFiles图形布局和可视化库的系列。
即使它的JavaScript version也可以使用不同的排列方式为数千个节点和边缘执行布局。 “有机”布局样式是力导向布局算法的实现,其性质与Neo4j的浏览器应用程序中使用的类似。但是有更多的布局算法可以为某些类型的图形结构和图表提供更好的可视化。根据问题的设置和结构,一些算法只需几秒钟,而更复杂的实现也可以使您的JavaScript引擎瘫痪。基于Java和.net的变体仍然表现得相当好,截至今天,但JavaScript引擎正在迎头赶上。
您可以在this online demo中使用这些算法和设置。
免责声明:我为yWorks工作,这是这些图书馆的制造商,但我并不代表我的雇主。
答案 4 :(得分:0)
我会查看http://neo4j.org/它的开源代码,这对您的情况很有帮助,因此您可以根据自己的需要进行自定义。可以找到github帐户here。