D3js强制布局更新节点和链接

时间:2015-09-09 04:49:37

标签: d3.js data-visualization

我的目标 - 我试图在节点被拖动后给节点计算[x,y],以便节点根据我计算的内容而不是丢弃的位置占据位置。

相关例子 - 我见过在forcelayout中更新节点和链接的例子。比如说,

https://gist.github.com/mbostock/1095795

http://bl.ocks.org/mbostock/1095795

我的方法(不起作用) -

在我的情况下,要求与上面的例子略有不同。拖动节点后(我执行force.stop()以避免强制布局接管拖动节点的位置分配),我根据节点的放置位置将节点重新分配给不同的[x,y]。给它一个d.fixed。执行此操作后,我更新了我的节点。节点占用计算的[x.y]位置,而不是它被丢弃的位置。直到这一步,一切都很好。

然而,在其他节点的后续拖动中(当drag.resume()自动启动时),在上一步中拖动的节点根据之前删除的位置占用[x,y]而不是基于我计算的[x,y]在上一步的拖拽结束时很好地占用了它。

我认为强制布局不会使用节点和链接进行更新。所以我用新节点和链接更新了力布局,如下所示,

force.nodes(newNodes)       .links(newLinks)       。开始();

我在mouseup.drag中执行此操作

仍然没有用,任何帮助表示赞赏。谢谢

1 个答案:

答案 0 :(得分:0)

设置位置时,您还需要设置内部布局使用的pxpy属性。更改(和简化)示例here