让我说,我有这些数据和维度:
var data = [
{"fruit": "apple", "amount": "12"},
{"fruit": "orange", "amount": "6"},
{"fruit": "grape", "amount": "11"},
{"fruit": "melon", "amount": "26"},
{"fruit": "lemon", "amount": "15"}
]
var ndx = crossfilter(data);
var fruitDimension = ndx.dimension(function (d) {
return d.fruit;
});现在,我只想用代码过滤“苹果”、“柠檬”和“橙色”。到现在为止,我正试图做一些类似的事情。
fruitDimension.filter(["apple","lemon","orange"])...but --它并不能全部工作。
- If I apply # **dimension.filter(value)** passing a vector as parameter, it deals with it as # dimension.filterRange(range)
- I could not find which filter works for different values.
参考资料:https://github.com/square/crossfilter/wiki/API-Reference
有人暗示我可以做些什么来过滤维度的不同元素(不遵循范围顺序)?
谢谢你,罗杰
发布于 2016-08-12 14:46:15
为此,交叉筛选器需要自定义筛选器函数。dc.js提供了一个。
应用于dc.js图表
如果您使用的是dc图,则应该通过图表的filter函数应用过滤器,该函数的语法和语义与交叉过滤器维度筛选器不同:
chart.filter([["apple","lemon","orange"]]);注意额外的一组括号。怪怪的对吧?我不知道它是怎么演变成这样的。另外,dc将切换每个值,因此如果要替换筛选器,请使用replaceFilter而不是filter。
这在 function中有记录,dc.js将过滤器应用于交叉过滤器。
图表不知道对交叉过滤器维度的直接更改:如果您使用图表的.filter(),则图表将更新可视化选择。
直接用交叉滤波器
如果要将多值筛选器直接应用于交叉筛选器维度,下面是为值数组生成筛选函数的函数:
function multivalue_filter(values) {
return function(v) {
return values.indexOf(v) !== -1;
};
}
fruitDimension.filterFunction(multivalue_filter(["apple","lemon","orange"]));https://stackoverflow.com/questions/38920359
复制相似问题