【发布时间】:2015-08-29 19:22:06
【问题描述】:
我正在尝试使用 dc.js 创建一些交互式饼图来表示篮球队的统计数据。一个饼图将每个球员的分数、另一个他们的薪水等表示为球队总数的一部分。
我不太明白如何使用交叉过滤器.dimension() 和.group() 函数。 reduceSum() 真的需要在那里吗?我得到的只是一个空饼图。我见过的其他示例具有不同的结构化数据,不适用于这种情况。
下面是一些工资饼图的相关代码:
var data = [
{"player":"boomhauer", "rebound_avg":12.1, "salary":4000, "point_avg":15},
{"player":"bill", "rebound_avg":4.2, "salary":3000, "point_avg":20},
{"player":"hank", "rebound_avg":12.1, "salary":4000, "point_avg":15},
{"player":"dale", "rebound_avg":16.1, "salary":6000, "point_avg":4},
];
var ndx = crossfilter(data);
var playerDim = ndx.dimension(function(d) {return d.player;});
var salaryPerPlayer = playerDim.group().reduceSum(function(d) {return d.salary;});
var salaryGroupPerPlayer = salaryPerPlayer.group(function(d) {return d.player; });
var salaryRingChart = dc.pieChart("#chart-ring-salary");
salaryRingChart
.width(200)
.height(200)
.slicesCap(17)
.innerRadius(10)
.dimension(salaryPerPlayer)
.group(salaryGroupPerPlayer)
.renderLabel(true);
dc.renderAll();
我得到的只是一个空饼图。
感谢您的帮助!
【问题讨论】:
标签: javascript d3.js data-visualization dc.js crossfilter