以下是绘制相同层次结构的两种不同方法。请注意,在“堆叠”布局中,节点总是比其最高“子”节点高一层。 (重要:请参阅问题底部的编辑以获取其他示例)
这两种类型的分层绘图方法有特定的名称吗?我正在尝试为“堆叠”算法找到现有算法,但似乎无法显示任何信息,因为我不知道它叫什么。
如果他们没有名称来区分它们,因为它们依赖于相同的算法,是否有众所周知的参数集用于获得具有现有算法的图形的“堆叠”版本?谢谢!
编辑:虽然上面的图表是严格的“trees”,但我正在寻找的算法应该能够处理节点有多个父节点的情况,以及从根到叶有多条路径。 Here's an example和here's another。
Edit2:如果它对任何人都有用,那么使用预先计算的节点层(y轴约束)的hacky(和慢速)强制导向方法似乎可以正常工作。 Here's what it looks like。那个例子使用了cytoscape.js和cola.js,而且它是颠倒的。它根本不是这个问题的解决方案所以我只是把它作为一个编辑。
(SO wouldn't let me submit the JSBin link without a code block...)
答案 0 :(得分:1)
我不知道上述任何具体名称。看起来两种情况下的分层算法都是longest path algorithm,它最小化了高度,但基本上忽略了宽度。如果您从下到上对图形进行分层,并且图形有许多汇点(顶点为零度的顶点),那么您将得到一个宽底层("堆叠"布局?)。如果您从上到下对图形进行分层并且它有许多源(顶点为零度数),那么您将得到一个宽的顶层("悬挂"布局?)。