解决小图中简单的 D3.js 交叉边

Solve simple D3.js crossing edges in small graphs

我正在开发一个 Web 应用程序,可以让您在交互式图形中加入点。我正在使用 D3.js 和力导向模块。

但我有一个非常特殊的问题:在小型网络中跨越边缘。

我读过这个 post:D3.js force directed graph, reduce edge crossings by making edges repel each other 但它是关于更大的网络。

我的网络是这样开始的:

然后,用户将创建边缘,留下如下内容:

问题是我发现了很多可以避免的交叉边。这是一个典型的例子:

我该如何解决这个问题?我知道有些案件根本无法解决。但是我的网络会有很少的节点,而且大多数时候可以在不交叉边的情况下绘制它们。

如何尝试在这个小型网络中找到最佳布局??提前致谢。

Sugiyama Algorithm and Gansner et al. 提供边缘最小化。您可以使用 javascript 跨不同开源图形库的多个实现