2015-04-22 48 views
1

this bl.ocks d3 example中,节点如何获得它们的随机“cx”和“cy”属性? (他们的x和y位置)?他们是随机分配的吗?节点x和y是否在强制布局图中自动设置?

我看到的唯一代码分配节点的Cx和Cy低于线(在该示例的代码的底部):

node.attr("cx", function(d) { return d.x; }) 
     .attr("cy", function(d) { return d.y; }); 

然而,无论在数据也不其他地方中的代码做我看到d.xd.y定义。他们如何设置?

回答

2

强制布局设置值。您在布局这里连接到您的数据:

force 
    .nodes(graph.nodes) 
    .links(graph.links) 
    .start(); 

documentation(重点煤矿):

force.nodes([节点])

如果指定的节点,设置布局的关联节点到指定的数组。如果未指定节点,则返回当前数组,该数组默认为空数组。每个节点具有以下属性:

  • index - 节点数组内节点的从零开始的索引。
  • x - 当前节点位置的x坐标。
  • y - 当前节点位置的y坐标。
  • px - 前一个节点位置的x坐标。
  • py - 前一个节点位置的y坐标。
  • fixed - 指示节点位置是否锁定的布尔值。
  • 权重 - 节点权重;关联链接的数量。

在将节点传递给布局之前,不需要设置这些属性;如果未设置,则在调用启动时,适当的默认值将由布局初始化。但是,请注意,如果您要在节点上存储其他数据,则您的数据属性不应与布局使用的上述属性相冲突。

+0

那么“合适的默认值”是随机的吗? – LazerSharks

+1

它可以。邻居的位置也被考虑在内:https://github.com/mbostock/d3/blob/master/src/layout/force.js#L251-L275 –

相关问题