可视化 DAG
Posted
技术标签:
【中文标题】可视化 DAG【英文标题】:Visualizing a DAG 【发布时间】:2011-04-01 04:12:22 【问题描述】:我有一个很大的有向无环图,我想在位图图像中进行可视化。
理想情况下,我希望所有根节点都位于图像顶部,所有叶节点都位于底部,即图形边缘都指向下方。
是否有一种很好的算法可以计算出满足这些约束的所有节点的坐标并产生良好的可视化效果?
【问题讨论】:
【参考方案1】:我建议你使用Gephi。
这个软件可以做你想做的所有事情,尤其是图形布局!
【讨论】:
【参考方案2】:查看Graphviz 软件集合。它包含几个渲染图形的程序。
最简单的方法是以 Graphviz 的一种文本格式将图形写入磁盘。然后执行其中一个渲染程序,并将生成的图像加载到您的应用程序中。
【讨论】:
【参考方案3】:贝叶斯网络也有类似的要求。您可能会寻找贝叶斯网络的算法。例如,This paper 可能会有所帮助。
【讨论】:
【参考方案4】:如果图表相当简单,那么位图会很好地为您服务。但是,对于非常密集的图形,您将需要矢量图形,例如支持以更友好的方式放大和缩小精细细节的 SVG 文件。更好的是使用专门用于导航图形的交互式工具,例如上面提到的 gephi 或 yED
如果您尝试可视化软件依赖关系图,我发现的最佳导航工具是 DGML tools,它是 Visual Studio 的一部分。他们使用了一个非常强大的Sugiyama 树布局,可以很好地使图形流向方向。它们具有强大的交互功能,这些边缘跳跃链接是无限制的。您还可以组织子图并将它们折叠起来等。
***中涵盖了几种图形描述语言,可以查看 https://en.wikipedia.org/wiki/Category:Graph_description_languages。如果您有大量 RAM,则 DGML 工具可以非常愉快地渲染,并使图形的交互和探索非常直观。
有一个不错的布局技术概述here 特别是来自 Kozo Sugiyama 的 #2 分层图形绘图。
【讨论】:
【参考方案5】:您可能对分层图形绘制(也称为“分层图形绘制”或“杉山式图形绘制”)感兴趣。该算法太长,无法在此处描述,但 Google 搜索提供了许多可靠的解释。
【讨论】:
【参考方案6】:你可以试试我写的这个 Go 包:https://github.com/h8liu/e8tools/tree/master/dagvis
一个例子:http://lonnie.io/gostd/dagvis/
【讨论】:
请注意,不鼓励link-only answers,因此答案应该是搜索解决方案的终点(与另一个参考文献的中途停留相比,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,保留链接作为参考 你应该至少像@kleopatra 所说的那样在答案中写出简短的描述。以上是关于可视化 DAG的主要内容,如果未能解决你的问题,请参考以下文章
新起点!大数据分布式可视化的 DAG 任务调度系统 Taier 正式发布1.4版本