我正在使用 dagre-d3 并创建了这个示例图。是否可以避免标有1的样本中的交叉问题。也许这可以标记到节点底部的边缘连接。我不确定如何实现此功能。有人可以帮忙吗?

此外,是否可以拉直边缘 2、3 和 4。有足够的空间来拉直它们。我只是不知道该怎么做。

任何帮助,将不胜感激。

泽山

javascript - dagre-d3 中的边缘定位-LMLPHP

最佳答案

这是您正在尝试解决的一个非常重要的问题。 AFAIK dagre 使用来自 Brandes-Köpf 的算法的变体来计算对齐。即使你能理解那个算法,调整它也是非常困难的。相反,使用完全不同的算法可能会给您更好的结果:在 yFiles for HTML's 分层/杉山样式布局的实现中,使用了单纯形网络等级分配算法,它通常不会遇到您在(否则非常好)绘图中看到的问题. GraphViz 也是该算法的 has an implementation,所以也许使用它也会为您的示例提供更好的结果。 Simplex 方法在计算上要昂贵得多,但很容易配置和微调。

关于你的第一点:快速浏览一下来源,我不明白为什么这个问题出现在你的 Dagre 样本中。看起来传入边的端口分配工作不正常 - 端口的位置应根据上一层中节点的相对位置进行排序。看起来不只是贝塞尔控制点有问题。

关于javascript - dagre-d3 中的边缘定位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33433979/

10-13 02:26