图形自动布局算法

为了简化这个问题,我有一个包含节点和边的图,这些节点和边都在一个2D 平面上。

我想能够做的是点击一个按钮,它使自动布局图看起来干净。我的意思是边的最小交叉,节点之间的良好空间,甚至可以表示图的尺度(加权边)。

我知道对于一个看起来干净的图表来说,这完全是主观的,但是有人知道一个算法,而不是重造轮子?

谢谢。

43556 次浏览

我建议你看看 Graphvizdot程序可以获取一个图形的规范,并为您生成一个网络的图像,有些“干净”。我已经链接到了“理论”页面,如果你对理论背景感兴趣,它会给你一些可能相关的链接。如果您只是想要解决所面临的布局问题,那么库和工具本身已经足够成熟。

如果你需要 Java 的布局,也可以使用 JGraph(我从事这个项目)。

你会发现 http://graphdrawing.org/< strong > 本教程 ,由 Roberto Tamassia,布朗大学教授,相当有帮助。

我喜欢很多力导向技术(本教程66-72页)像 春天嵌入器

假设在任意两个相邻节点之间有一个弹簧或其他力,然后让自然(模拟)完成这项工作:)

我会说作为 Noufal Ibrahim,但是您也可以更精确地查看 Graphviz项目的 C API。它包括一个用于构建包含所有节点和边的图形的库(Pdf) ,以及一个用于布局图形的库(Libgvc.pdf)(只需计算每个节点的位置) ,这样您就可以在自己的 UI 中显示它了。

一个很好的视觉指南如何最流行的布局实际上看: 遵循 链接