在DC.JS中,我有一个排名前10的方差A-minus B与下面的昏暗/组:
.dimension(dateDim)
.group(grp)
相关变量是:
var dateDim = ndx.dimension(function (d) { return d.DATE; });
var dateFormat = d3.time.format("%d/%m/%Y");
对于小组来说,这很好用:
var grp= dateDim.group().reduceSum(function(d) {return Math.abs(d.A - d.B);});
但是,我想做的只是展示截至今天的商品。
我尝试了下面的功能,但这不起作用。它可能只是语法。 任何想法?
var grp2= dateDim.group().reduceSum(function(d) {
if (dateDim > dateFormat(today))return dateDim; else return Math.abs(d.A- B.plan);
谢谢,stutray
答案 0 :(得分:1)
这在dc.js常见问题解答中解决:https://github.com/dc-js/dc.js/wiki/FAQ#how-do-i-filter-the-data-before-its-charted
所以...原来我说过上面的内容。但您实际想要做的是过滤掉与特定预定义过滤器不匹配的记录,以便它们不会聚合到此图表的组中?在这种情况下,您需要使用自定义过滤器功能,我建议使用Reductio等帮助程序库,它提供过滤功能。
var dAct = reductio().filter(function(d) {
// Here `d` is the actual data record. Return a boolean by testing
// d against your filter criteria. Return true to include the record and
// false to exclude it.
return d.STARTDATE !== "10\/Sep\/2016";
})
.sum(function(d) {return Math.abs(d.A - d.B);})(dateDim.group());
如果你使用Reductio,你还需要在你的图表中使用dc.js中的valueAccessor函数:
rChart
...
.valueAccessor(function(d) { return d.value.sum; })
关于Codepen的更新示例:http://codepen.io/anon/pen/oxrPJv