toolkit/javascript/d3/examples/treemap/treemap.js
changeset 47 c0b4a8b5a012
equal deleted inserted replaced
46:efd9c589177a 47:c0b4a8b5a012
       
     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 }