2014-06-11 60 views
0

我想將數據加載到D3腳本中,但在獲取Dendogranm示例中的數據時遇到困難。該數據來自服務器,如下所示:json傳遞給D3

d3.json([{"name": "flare", "children": [{"name": "analytics", "children": [{"name": "cluster", "children": [{"name": "AgglomerativeCluster", "size": 3938}, {"name": "CommunityStructure", "size": 3812}, {"name": "HierarchicalCluster", "size": 6714}, etc 

在創建羣集出現以下錯誤:「遺漏的類型錯誤:未定義無法設置屬性‘深度’」

var nodes = cluster.nodes(root), 
    links = cluster.links(nodes); 

所以d3.json是不是適當的結構。我認爲這一定要改成

var flare = [{"name": "flare", "children": [{"name": "analyti ... 

var svg = d3.select("body").append("svg") 
.attr("width", width) 
.attr("height", height) 
.append("g") 
.attr("transform", "translate(40,0)"); 

var nodes = cluster.nodes(flare), 
    links = cluster.links(nodes); 

var link = svg.selectAll(".link") 
    .data(links) 
.enter().append("path") 

好心好意支持我。

+2

呃? d3.json將URL作爲參數而不是JavaScript數組。請參閱https://github.com/mbostock/d3/wiki/Requests#d3_json –

+0

Felix,聲音邏輯 – Richard

回答

0

我遇到了同樣的錯誤,這是因爲我試圖定義一個包佈局而沒有正確設置寬度和高度。

如果您cluster變量被等被定義:

var cluster = d3.layout.pack() 
    .size([width, height]) 
    .value(function(d) { 
    return d.values; 
    }); 

這應該爲你工作。 d.values指的是大小(數字)

我相信flare也需要是一個對象而不是數組。