|
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 } |