UNPKG

d3

Version:

A small, free JavaScript library for manipulating documents based on data.

46 lines (37 loc) 1.46 kB
var r = 960 / 2; var tree = d3.layout.tree() .size([360, r - 120]) .sort(null) .children(function(d) { return isNaN(d.value) ? d3.entries(d.value) : null; }) .separation(function(a, b) { return (a.parent == b.parent ? 1 : 2) / a.depth; }); var diagonal = d3.svg.diagonal() .projection(function(d) { var r = d.y, a = (d.x - 90) / 180 * Math.PI; return [r * Math.cos(a), r * Math.sin(a)]; }); var vis = d3.select("#chart").append("svg:svg") .attr("width", r * 2) .attr("height", r * 2 - 150) .append("svg:g") .attr("transform", "translate(" + r + "," + r + ")"); d3.json("flare.json", function(json) { var nodes = tree(d3.entries(json)[0]); var link = vis.selectAll("path.link") .data(tree.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 "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; }) node.append("svg:circle") .attr("r", 4.5); node.append("svg:text") .attr("dx", function(d) { return d.x < 180 ? 8 : -8; }) .attr("dy", ".31em") .attr("text-anchor", function(d) { return d.x < 180 ? "start" : "end"; }) .attr("transform", function(d) { return d.x < 180 ? null : "rotate(180)"; }) .text(function(d) { return d.data.key; }); });