2012-12-16 51 views
4

我有一個表示圖(也是我的情況下,一棵樹)WHI lookx這樣的JSON轉換節點和鏈接到分層樹:在d3.js

{"directed": true, "graph": [], 
"nodes": [{"time": 4, "id": 4551308, "name": "Alto da Boa Vista"}, {"time": 7, "id": 4551309, "name": "Sumare"}, 
... 
"links": [{"source": 0, "target": 36, "weight": 1}, 
{"source": 1, "target": 36, "weight": 1}, 
... 

爲了用它來構建樹像在這個例子中一樣,http://mbostock.github.com/d3/talk/20111116/force-collapsible.html,我需要將這個JSON轉換爲嵌套在父節點中的子節點的層次結構對象,如下所示:https://github.com/mbostock/d3/wiki/Tree-Layout#wiki-tree

D3有一些內置函數可以將圖轉換爲樹嗎? 或者你將如何去從圖生成一個嵌套樹JSON objetc?

我在這的jsfiddle的例子:http://jsfiddle.net/fccoelho/bFT8K/8/

+0

是你能夠找到一個解決方案?我期待讓我已經準備好的'nodes'和'links' json數組轉換爲分層格式的json,而不需要重新編寫完整的json代碼。 – VarunC

回答

2

好吧,這是一個2部分的答案。

第1部分: D3確實具有將數組轉換爲嵌套結構的功能。看一看在d3.nest()函數

這主要是指分層佈局:集羣,包,分區,樹圖

第2部分: 如果您試圖獲得與您發佈的示例類似的佈局,則無需對數據執行任何操作。該示例使用期望圖形的力佈局。由於力佈局可以處理任何形狀的圖形,並且樹只是一個遵循一些約束的圖形,所以您不需要進行任何轉換。如果圖形的形狀碰巧是一棵樹,它會看起來像一棵樹。

這應該是足夠好:

force 
    .nodes(spread.nodes) 
    .links(spread.links) 
    .start(); 
+0

使用武力我可以得到x,y的位置,但它看起來不像樹,它像所有節點隨機出現我需要設置它們像樹或在某種安排 –