2015-04-22 53 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 –

相關問題