1

我想修改 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 (半径),但由于我仍在学习,我不知道在哪里注入它。

感谢您的提示/帮助。

4

1 回答 1

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

于 2013-09-07T01:02:26.740 回答