1 | var w = 960, |
---|
2 | h = 500, |
---|
3 | fill = d3.scale.ordinal().range(colorbrewer.Greys[9].slice(1, 4)), |
---|
4 | stroke = d3.scale.linear().domain([0, 1e4]).range(["brown", "steelblue"]); |
---|
5 | |
---|
6 | var treemap = d3.layout.treemap() |
---|
7 | .size([w, h]) |
---|
8 | .value(function(d) { return d.size; }); |
---|
9 | |
---|
10 | var bundle = d3.layout.bundle(); |
---|
11 | |
---|
12 | var div = d3.select("#chart").append("div") |
---|
13 | .style("position", "relative") |
---|
14 | .style("width", w + "px") |
---|
15 | .style("height", h + "px"); |
---|
16 | |
---|
17 | var line = d3.svg.line() |
---|
18 | .interpolate("bundle") |
---|
19 | .tension(.85) |
---|
20 | .x(function(d) { return d.x + d.dx / 2; }) |
---|
21 | .y(function(d) { return d.y + d.dy / 2; }); |
---|
22 | |
---|
23 | d3.json("../data/flare-imports.json", function(classes) { |
---|
24 | var nodes = treemap.nodes(packages.root(classes)), |
---|
25 | links = packages.imports(nodes); |
---|
26 | |
---|
27 | div.selectAll("div") |
---|
28 | .data(nodes) |
---|
29 | .enter().append("div") |
---|
30 | .attr("class", "cell") |
---|
31 | .style("background", function(d) { return d.children ? fill(d.key) : null; }) |
---|
32 | .call(cell) |
---|
33 | .text(function(d) { return d.children ? null : d.key; }); |
---|
34 | |
---|
35 | div.append("svg:svg") |
---|
36 | .attr("width", w) |
---|
37 | .attr("height", h) |
---|
38 | .style("position", "absolute") |
---|
39 | .selectAll("path.link") |
---|
40 | .data(bundle(links)) |
---|
41 | .enter().append("svg:path") |
---|
42 | .style("stroke", function(d) { return stroke(d[0].value); }) |
---|
43 | .attr("class", "link") |
---|
44 | .attr("d", line); |
---|
45 | }); |
---|
46 | |
---|
47 | function cell() { |
---|
48 | this |
---|
49 | .style("left", function(d) { return d.x + "px"; }) |
---|
50 | .style("top", function(d) { return d.y + "px"; }) |
---|
51 | .style("width", function(d) { return d.dx - 1 + "px"; }) |
---|
52 | .style("height", function(d) { return d.dy - 1 + "px"; }); |
---|
53 | } |
---|