1

我正在使用力布局创建节点和边缘网络。我的应用程序有一些动态节点(可以是由后端代码确定的任意数量)。我允许强制布局自己为这些动态节点分配 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(node) 直接打印节点时,它会给出上述输出。

请让我知道如何获得由力布局本身分配的动态数据,即值 x:3014.08.. 在上述情况下?

4

1 回答 1

1

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

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

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

如果您还有任何问题,请将您目前拥有的代码发布在 jsfiddle 或 bl.ocks.org 上。

于 2013-06-26T14:40:48.930 回答