var w = 960, h = 2200; var cluster = d3.layout.cluster() .size([h, w - 160]) .sort(null) .children(function(d) { return isNaN(d.value) ? d3.entries(d.value) : null; }); var diagonal = d3.svg.diagonal() .projection(function(d) { return [w - d.y - 80, d.x]; }); var vis = d3.select("#chart").append("svg:svg") .attr("width", w) .attr("height", h) .append("svg:g") .attr("transform", "translate(40, 0)"); d3.json("flare.json", function(json) { var nodes = cluster(d3.entries(json)[0]); var link = vis.selectAll("path.link") .data(cluster.links(nodes)) .enter().append("svg:path") .attr("class", "link") .attr("d", diagonal); var node = vis.selectAll("g.node") .data(nodes) .enter().append("svg:g") .attr("class", "node") .attr("transform", function(d) { return "translate(" + (w - d.y - 80) + "," + d.x + ")"; }) node.append("svg:circle") .attr("r", 4.5); node.append("svg:text") .attr("dx", function(d) { return d.children ? 8 : -8; }) .attr("dy", 3) .attr("text-anchor", function(d) { return d.children ? "start" : "end"; }) .text(function(d) { return d.data.key; }); });