2014-06-11 2 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 

다음 오류가 클러스터 생성에서 발생합니다 "catch되지 않은 형식 오류를 : 정의의 설정할 수 없습니다 재산 '깊이'"

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은 javascript 배열이 아닌 인수로 URL을 사용합니다. https://github.com/mbostock/d3/wiki/Requests#d3_json –

+0

Felix, Sounds logic보기 – Richard

답변

0

폭과 높이를 올바르게 설정하지 않고 팩 레이아웃을 정의하려고했기 때문에이 같은 오류가 발생했습니다.

당신의 cluster 변수가 같이 정의 된 경우 : 당신을 위해 일한다

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

. d.values은 크기 (수)를 나타냅니다.

나는 flare도 배열 대신 객체가되어야한다고 생각합니다.