我需要在网络中使用强制算法,但该网络分为几部分。
例如,第一部分的顶点不能离开零件1.零件2的顶点需要在第2部分。
如果第1部分的顶点与第2部分的顶点之间存在连接,则此连接将使这两个顶点接近,但是,不会让它们的部分。
此草稿图片说明了这个想法:example http://oi62.tinypic.com/2nba745.jpg
我需要为大约8个部分做这个。有些部分在另一部分,其他部分彼此相邻。并且网络将在这些部分上表示,每个顶点在它们各自的部分中,然而,算法力量应该尝试拉动连接的顶点本身。
答案 0 :(得分:0)
我的解决方案是使用d3中的“滴答”功能创建约束。
为了提高性能并避免拐角处的“锁定”顶点,我决定只使用圆。
对于每个节点:
最终,每个节点与每个区域进行了大量计算。这加上了冲突检测的复杂性。但是,它处理的网络大约有1000个节点。
此处的详细信息: Heberle,H.,Carazzolle,M.,Telles,G。等。 CellNetVis:一种网络工具,用于使用受细胞成分约束的力导向布局来可视化生物网络。 BMC生物信息学18,395(2017)。 https://doi.org/10.1186/s12859-017-1787-5
潜在改进注意事项:最昂贵的计算之一是检查节点是哪些元素的组合。例如,如果有一个本机的“浏览器”函数给出一个点x,y,则返回该点结束的SVG元素,这将使可视化更加流畅,并创建“空间”以进行更多改进。到我实现它的时候,我还没有找到这样的功能。