2017-04-06 22 views
0

我有一些使用d3.stratify進行分層的樹型數據,它給了我所假設的是一個合適的數據結構(它包含子項,數據和父項)。但是,當我通過d3.tree()時,x和y值都是NaN,這使得它們不可能被繪製。根據我見過的例子,我不需要運行d3.hierarchy(),因爲stratify對我來說這樣做,而且我已經嘗試使用hierarchy(),但無論如何都沒有成功。d3 v4:樹圖給出x和y的NaN

我試着在做JSON.stringify(data)來粘貼這裏的數據,但它給了我一個關於將循環結構轉換爲JSON的錯誤,因此也沒有任何效果。我所知道的是每個圖層(除了最上面的圖層)都有一個children陣列,一個data對象和一個parent對象,所以這一切似乎都是正確的。

編輯:我試過一些測試數據(from this link),我仍然得到x和y的NaN。我複製了treeData,把它通過d3.hierarchy,然後通過tree()調用,x和y仍然是NaN。

var treeMap = d3.tree() 
       .size(width, height2); // 1020, 170 in my case. 

var treeData = 
    { 
    "name": "Top Level", 
    "children": [ 
     { 
     "name": "Level 2: A", 
     "children": [ 
      { "name": "Son of A" }, 
      { "name": "Daughter of A" } 
     ] 
     }, 
     { "name": "Level 2: B" } 
    ] 
    }; 

treeData = d3.hierarchy(treeData, function(d) { return d.children; }); 
var nodes = treeMap(treeData); // gives NaN x and y values. 

回答

0

啊,太簡單了,太傻了。我沒有通過([height, width]),而是將(height, width)傳遞給樹函數,所以當然它失敗了。給它適當的數組可以修復一切。