Crossfilter / dc.js中的假组过滤

时间:2015-09-24 09:15:34

标签: javascript dc.js crossfilter

我正在尝试了解dc.js常见问题How do I filter the data before it's charted?

中描述的“假组”过滤方法

请在此处查看我的示例:dc.js jsfiddle

我希望在绘制图表之前按TYPE过滤我的数据(要过滤的TYPE将来自我的应用程序的另一部分)。基本上它应该与点击行图中的四个条形(A,B,C,D)之一具有相同的效果,但我希望能够从我的代码中的其他位置控制它,它应该在绘制图表。

我想我需要在名为“type”的组中使用Filter out bins by predicate function on the values方法,例如

function filter_bins(source_group, f) {
return {
    all:function () {
        return source_group.all().filter(function(d) {
            return f(d.value);
        });
    }
};

}

但是我不清楚我应该将什么函数作为f传递,或者谓词函数是什么。

我将不胜感激任何帮助!感谢。

1 个答案:

答案 0 :(得分:3)

如果您希望它真正表现得好像在typeRowChart中点击了这个类型(这可能就是您想要的),那么就可以在任何地方执行此操作:

typeRowChart.filter("A");

如果您希望typeRowChart由于某种原因保持原样(未经过滤),但您想要对typeDim进行过滤,请直接过滤维度并调用dc.redrawAll()

typeDim.filter("A");
dc.redrawAll();

如果您希望新选择也过滤typeRowChart,请创建一个新的类型维度并对其进行过滤:

var typeDim2 = cf.dimension(function (d) {return d.TYPE;});
typeDim2.filter("A");
dc.redrawAll();

幸运的是,我不认为在这种情况下需要假组模式。 : - )