【发布时间】:2018-09-08 12:32:04
【问题描述】:
我有以下代码:
var simulation = d3v5.forceSimulation()
.force('link', d3v5.forceLink().id(function (d) { return d.id; }))
.force('charge', d3v5.forceManyBody())
.force('center', d3v5.forceCenter(width / 2, height / 2))
这是一个示例 codePen(见第 57 行): https://codepen.io/anon/pen/PdOqZK?editors=1010
最后一行设置了力的中心。当我拖动节点并设置此中心时,节点似乎从中心向外。但是当我有以下情况时:
var simulation = d3v5.forceSimulation()
.force('link', d3v5.forceLink().id(function (d) { return d.id; }))
.force('charge', d3v5.forceManyBody())
.force('x', d3v5.forceX(width / 2))
.force('y', d3v5.forceY(height / 2))
这是一个示例 codePen(见第 57 行): https://codepen.io/anon/pen/gdXprR?editors=1010
它按预期工作。如果有人能解释发生了什么,那就太好了。
【问题讨论】:
-
在这里看看我的解释:stackoverflow.com/a/51841404/5768908
-
@GerardoFurtado 我知道它给了你力量的中心,但它向外移动的原因是什么?只是因为我没有设置力 x 和 y 吗?
-
不,这是因为质心在同一位置,而不是单个节点。这就是为什么拖动一个节点会使其他节点向外移动。
标签: javascript d3.js