我正在使用强制布局创建节点和边缘网络。我的应用程序有一些动态节点(可以是由后端代码确定的任何数字)。我允许强制布局自动为这些动态节点分配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 ..在上述情况下?
答案 0 :(得分:1)
force.nodes()
应该返回所有节点的数组。要从第一个值中获取x
值,请使用force.nodes()[0].x
(documentation)。
要在节点之间的连接上制作动画,最好使用force.links()
,它将返回节点之间的所有链接。如果您正在处理其中一个示例,则应该有一行类似于var link = svg.selectAll(".link")
的代码;例如,如果有,你可以慢慢将所有链接变为绿色:
> link.transition().duration(5000).style("stroke", "green")
如果您还有其他问题,请在jsfiddle或bl.ocks.org上发布您目前为止的代码。