我有一个大的有向无环图,我想在位图图像中可视化。
理想情况下,我希望将所有根节点放在图像的顶部,并且底部的所有叶节点,即图形边缘都指向向下的方向。
是否有一个很好的算法来计算满足这些约束条件的所有节点的坐标并产生良好的可视化效果?
答案 0 :(得分:13)
我建议您使用Gephi。
这种软件能够完成您想要的所有事情,尤其是图形布局!
答案 1 :(得分:8)
查看Graphviz软件集合。它包含几个渲染图形的程序。
最简单的方法是以Graphviz的文本格式之一将图形写入磁盘。然后执行其中一个渲染程序,并将生成的图像加载到您的应用程序中。
答案 2 :(得分:3)
贝叶斯网络有类似的要求。您可能会寻找贝叶斯网络的算法。例如,This paper可能会有所帮助。
答案 3 :(得分:1)
如果图形非常简单,则位图将为您提供很好的服务。但是对于非常密集的图形,您需要带有矢量图形的内容,例如SVG文件,它将以更友好的方式支持放大和缩小精细细节。更好的方法是使用交互式工具专门用于导航诸如gephi之类的图形,例如上述某人或yED
如果您要可视化软件依赖关系图,那么我发现用于导航的最佳工具是DGML tools,它是Visual Studio的一部分。他们使用非常强大的Sugiyama树形布局,可以很好地使图流具有方向性。它们具有强大的交互功能,这些边缘跳动链接是无与伦比的。您还可以组织子图并将其折叠下来,等等。
Wikipedia中涵盖了几种图形描述语言,可进行检出 https://en.wikipedia.org/wiki/Category:Graph_description_languages。如果您有大量的RAM,则DGML工具可以非常令人愉悦地呈现并使图形的交互和浏览非常直观。
对布局技术有一个不错的了解,here特别是Suzoyama Kozo的#2分层图形绘图。
答案 4 :(得分:0)
您可能对分层图形绘制(也称为“分层图形绘制”或“杉山风格图形绘制”)感兴趣。这个算法太长了,无法在此描述,但谷歌搜索提出了许多可靠的解释。