2013-12-14 52 views
2

我想下面d3.js力佈局適應自己的需要:
http://bl.ocks.org/mbostock/1093130d3.js強制佈局圖:如何從頭開始構建節點對象?

當我使用下面的JSON文件,一切顯示正常(2個節點和1個鏈接):

{ 
    "name": "parent", 
    "children": [ 
      {"name": "child1", "size": 100} 
    ] 
    } 

然後,我想從頭開始構建節點對象;所以,在上面提到的參考例中,我用下面的一個替換flatten()功能:

function flatten1() { 
     var nodes = []; 
     var node = {name: 'child1', size: 100, id: 1}; 
     nodes.push(node); 
     node = {name: 'parent', children: [{name: 'child1', size: 100, id: 1}], id: 2}; 
     nodes.push(node); 
     return nodes; 
    } 

update()函數現在開頭:

var nodes = flatten1(), 
links = d3.layout.tree().links(nodes); 

當然,我不使用json文件了。
當我檢查節點和鏈接的內容時,它看起來類似於以前的工作代碼(帶有json文件),但是存在顯示問題:2個節點都可以,但鏈接從父節點轉到svg區塊的左上角...

我錯過了什麼? 任何幫助將大大優於。

回答

2

我猜想,你傳遞到第二個節點的子節點需要是第一位的,沒有新對象要創建一個參考。嘗試這個;

function flatten1() { 
    var nodes = []; 
    var node1 = {name: 'child1', size: 100, id: 1}; 
    nodes.push(node1); 
    var node2 = {name: 'parent', children: [node1], id: 2}; 
    nodes.push(node2); 
    return nodes; 
} 

如果這樣的作品,然後它給你如何塑造你壓平算法的剩餘一些想法。

+0

您的解決方案有效。非常感謝。 – user3102556

相關問題