// Generated by CoffeeScript 1.10.0 (function() { var color, height, margin, rect_margin, svg, treemap, width; width = 960; height = 500; margin = 5; rect_margin = 2.5; color = d3.scale.category10(); treemap = d3.layout.treemap().size([width - margin * 2, height - margin * 2]).sort(null).padding(1).ratio(1).sticky(true).value(function(d) { return d.size; }); svg = d3.select('svg').attr('width', width).attr('height', height).append('g').attr('transform', 'translate(' + margin + ', ' + margin + ')'); d3.json('province.json', function(error, root) { var enter_node, node, node_data; root.children.forEach(function(region) { region.children.sort(function(a, b) { return d3.ascending(+a.size, +b.size); }); return region.size = d3.sum(region.children, function(d) { return +d.size; }); }); root.children.sort(function(a, b) { return d3.ascending(a.size, b.size); }); root.children.forEach(function(d, i) { return d.i = i; }); node_data = treemap.nodes(root); node = svg.datum(root).selectAll(".node").data(node_data.filter(function(d) { return d.depth === 2; })); enter_node = node.enter().append('g'); enter_node.append('rect').attr("class", "node").attr('x', function(d) { return d.x; }).attr('y', function(d) { return d.y; }).attr('width', function(d) { return d.dx; }).attr('height', function(d) { return d.dy; }).style('fill', function(d) { var c; c = d3.hcl(color(d.parent.i)); c.l -= 5; c.c -= 20; return c; }).style('stroke', '#fff').append('title').text(function(d) { return d.name + ': ' + d3.format(',')(d.size); }); return enter_node.append('text').style('text-anchor', 'middle').attr('dy', '0.35em').attr('fill', '#fff').attr('font-size', function(d) { if ((d.capital != null) && d.capital) { return 15; } else { return 10; } }).attr('transform', function(d) { return 'translate(' + (d.x + d.dx / 2) + ', ' + (d.y + d.dy / 2) + ')'; }).text(function(d) { return d.id; }); }); }).call(this);