D3.js的网络和力量的界限?

时间:2014-08-30 17:31:56

标签: javascript svg d3.js force-layout bounding-box

我需要在网络中使用强制算法,但该网络分为几部分。

例如,第一部分的顶点不能离开零件1.零件2的顶点需要在第2部分。

如果第1部分的顶点与第2部分的顶点之间存在连接,则此连接将使这两个顶点接近,但是,不会让它们的部分。

此草稿图片说明了这个想法:example http://oi62.tinypic.com/2nba745.jpg

我需要为大约8个部分做这个。有些部分在另一部分,其他部分彼此相邻。并且网络将在这些部分上表示,每个顶点在它们各自的部分中,然而,算法力量应该尝试拉动连接的顶点本身。

1 个答案:

答案 0 :(得分:0)

我的解决方案是使用d3中的“滴答”功能创建约束。

为了提高性能并避免拐角处的“锁定”顶点,我决定只使用圆。

对于每个节点:

  1. 确保它在其区域内。
  2. 确保它也不位于其他每个区域之内。

最终,每个节点与每个区域进行了大量计算。这加上了冲突检测的复杂性。但是,它处理的网络大约有1000个节点。

此处的详细信息: Heberle,H.,Carazzolle,M.,Telles,G。等。 CellNetVis:一种网络工具,用于使用受细胞成分约束的力导向布局来可视化生物网络。 BMC生物信息学18,395(2017)。 https://doi.org/10.1186/s12859-017-1787-5

潜在改进注意事项:最昂贵的计算之一是检查节点是哪些元素的组合。例如,如果有一个本机的“浏览器”函数给出一个点x,y,则返回该点结束的SVG元素,这将使可视化更加流畅,并创建“空间”以进行更多改进。到我实现它的时候,我还没有找到这样的功能。