我在具有链接节点和单个节点的网络上使用d3-force仿真。
问题是: 这股力量推动了一切远离。
我想要的是,仅对链接的节点起作用的力,如果它们被推向彼此或两个链接的组件重叠。
var simulation = d3Force.forceSimulation()
.alphaDecay(0)
.force("link", d3Force.forceLink()
.distance(60)
.strength(0.5)
.id(function(d) { return d.index; }))
.force("charge", d3Force.forceManyBody().strength(-1000))
.restart();
答案 0 :(得分:0)
将forceX
和forceY
附加到您的力量模拟可以解决问题。这是一个例子:
var simulation = d3.forceSimulation()
.force("link", d3.forceLink().id(function (d) {
return d.id;
}))
.force("charge", d3.forceManyBody().strength(-50))
.force("center", d3.forceCenter(width / 2, height / 2))
.force("x", d3.forceX().strength(0.1))
.force("y", d3.forceY().strength(0.1));
答案 1 :(得分:-1)
我猜你需要使用一个中心力量拉动你的" unlinked" d3.forceCenter([x, y])
中的节点。但是这也可以在您的链接节点中绘制,因此可能会调整链接强度(如果需要,还可以调整链接强度)以将链接的节点推回去。
使链接/未链接节点上的强制工作方式不同于我。