将d3.nest汇总应用于嵌套饼图(以改变馅饼的大小)

时间:2013-09-06 23:59:22

标签: javascript charts d3.js nested rollup

我想修改Mike Bostock的嵌套馅饼示例http://bl.ocks.org/mbostock/1305337 每个机场的航班数量不同的馅饼大小;了解每个机场的繁忙程度。我的猜测是总结一下 通过的航班数量 .rollup(function(leaves){return {“total_flights”:d3.sum(leaves,function(d){return +(d.flights);})}})(来自http://bl.ocks.org/phoebebright/raw/3176159/) 并以某种方式应用于r(半径),但在我还在学习的时候,我不知道在哪里注入它。

感谢您的提示/帮助。

1 个答案:

答案 0 :(得分:2)

创建一个具有每个原始航班总数的对象:

var totalFlights = {};
airports.forEach(function(d){
  totalFlights[d.key] = d3.sum(d.values.map(function(d){ return +d.count; }));
});

根据原点的总飞行大小确定弧的大小:

 var arc = d3.svg.arc()
    .innerRadius(function(d){ return totalFlights[d.data.origin]/952 * r / 2; })
    .outerRadius(function(d){ return totalFlights[d.data.origin]/952 * r; });

952在这里有点神奇的数字,设置等于机场的最大航班数。理想情况下,您可以使用比例。

工作示例: http://bl.ocks.org/1wheel/6471631