访问由强制布局自动分配的数据

时间:2013-06-26 11:51:33

标签: d3.js force-layout

我正在使用强制布局创建节点和边缘网络。我的应用程序有一些动态节点(可以是由后端代码确定的任何数字)。我允许强制布局自动为这些动态节点分配x和y,它调用force.start()函数。

现在,有一组不同的节点在边缘上移动(例如,在道路上行驶的汽车)连接静态和动态节点。对于这个动画,我需要从它分配给动态节点的force.nodes()中获取x和y值。我尝试使用普通的点运算符来获取值但它无法返回实际值。

以下是节点

的值之一
[09:13:07.505] ({name:"D_Exit_0", dynamic:true, act_cap:-1, danger:0, index:0, weight:1, x:3014.087389427884, y:513.2901517247882, px:3013.9965777253265, py:513.0782974731648})

此处的x和y值由力布局指定。 当我尝试node.x时,它返回了我在访问此节点之前访问过的值。但是,当我使用console.log(节点)直接打印节点时,它会给出上面的输出。

请告诉我如何获取力布局本身分配的动态数据,即值x:3014.08 ..在上述情况下?

1 个答案:

答案 0 :(得分:1)

force.nodes()应该返回所有节点的数组。要从第一个值中获取x值,请使用force.nodes()[0].xdocumentation)。

要在节点之间的连接上制作动画,最好使用force.links(),它将返回节点之间的所有链接。如果您正在处理其中一个示例,则应该有一行类似于var link = svg.selectAll(".link")的代码;例如,如果有,你可以慢慢将所有链接变为绿色:

> link.transition().duration(5000).style("stroke", "green")

如果您还有其他问题,请在jsfiddle或bl.ocks.org上发布您目前为止的代码。