1 | var w = 960, |
---|
2 | h = 500, |
---|
3 | color = d3.scale.category20c(); |
---|
4 | |
---|
5 | var treemap = d3.layout.treemap() |
---|
6 | .size([w, h]) |
---|
7 | .sticky(true) |
---|
8 | .value(function(d) { return d.size; }); |
---|
9 | |
---|
10 | var div = d3.select("#chart").append("div") |
---|
11 | .style("position", "relative") |
---|
12 | .style("width", w + "px") |
---|
13 | .style("height", h + "px"); |
---|
14 | |
---|
15 | d3.json("../data/flare.json", function(json) { |
---|
16 | div.data([json]).selectAll("div") |
---|
17 | .data(treemap.nodes) |
---|
18 | .enter().append("div") |
---|
19 | .attr("class", "cell") |
---|
20 | .style("background", function(d) { return d.children ? color(d.name) : null; }) |
---|
21 | .call(cell) |
---|
22 | .text(function(d) { return d.children ? null : d.name; }); |
---|
23 | |
---|
24 | d3.select("#size").on("click", function() { |
---|
25 | div.selectAll("div") |
---|
26 | .data(treemap.value(function(d) { return d.size; })) |
---|
27 | .transition() |
---|
28 | .duration(1500) |
---|
29 | .call(cell); |
---|
30 | |
---|
31 | d3.select("#size").classed("active", true); |
---|
32 | d3.select("#count").classed("active", false); |
---|
33 | }); |
---|
34 | |
---|
35 | d3.select("#count").on("click", function() { |
---|
36 | div.selectAll("div") |
---|
37 | .data(treemap.value(function(d) { return 1; })) |
---|
38 | .transition() |
---|
39 | .duration(1500) |
---|
40 | .call(cell); |
---|
41 | |
---|
42 | d3.select("#size").classed("active", false); |
---|
43 | d3.select("#count").classed("active", true); |
---|
44 | }); |
---|
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 | } |
---|