Javascript 从饼图的交叉筛选维度返回多个值
我正在使用dc.js来显示饼图。我看到的所有饼图示例都包含返回单个值的交叉筛选维度Javascript 从饼图的交叉筛选维度返回多个值,javascript,d3.js,crossfilter,dc.js,Javascript,D3.js,Crossfilter,Dc.js,我正在使用dc.js来显示饼图。我看到的所有饼图示例都包含返回单个值的交叉筛选维度 var quarter = ndx.dimension(function (d) { var month = d.dd.getMonth(); if (month <= 3) return "Q1"; else if (month > 3 && mon
var quarter = ndx.dimension(function (d) {
var month = d.dd.getMonth();
if (month <= 3)
return "Q1";
else if (month > 3 && month <= 5)
return "Q2";
else if (month > 5 && month <= 7)
return "Q3";
else
return "Q4";
});
var quarterGroup = quarter.group().reduceSum(function (d) {
return d.volume;
});
但这不起作用,因为它将分割饼图以显示所有不同类型的arraylist,而不是按其内容显示
我已经研究这个问题有一段时间了,找不到解决办法。使用dc.js和crossfilter是否可以做到这一点?不是专家,但我认为您需要在组中使用.reduce(),并创建自己的reduceAdd、reduceRemove和reduceInitial函数
.groupAll().reduce(reduceAdd, reduceRemove, reduceInitial).value();
就像解释的一样,只是它是饼图,不是条形图。我知道这个问题已经有七年了。我一直在快速回顾最流行的未回答的交叉筛选问题,这是第4条 标记维度,或,在Crossfilter中实现,并在后续版本中修复了错误 声明维度时,传递可选的第二个参数
true
,并让dimension key函数返回一个数组(如问题所示)。每个记录的每个键都将计数一次
警告:由于行数不止一次,因此不要在任何地方(如a)使用这种维度,因为这些地方的值的总和预计将达到100%。可能重复您是否找到了任何解决方案?此解决方案也是正确的,但该功能现在是内置的-请参阅我的答案。
.groupAll().reduce(reduceAdd, reduceRemove, reduceInitial).value();