我使用crossfilter来获取x轴上的数据和y轴上出现的次数。
var data = [{
Owner: "Alyssa",
ID: "A"
}, {
Owner: "Alyssa",
ID: "A"
}, {
Owner: "Alyssa",
ID: "A"
}, {
Owner: "Alyssa",
ID: "A"
}, {
Owner: "Alyssa",
ID: "B"
}, {
Owner: "Bob",
ID: "A"
}, {
Owner: "Bob",
ID: "D"
}, {
Owner: "Joe",
ID: "A"
}, {
Owner: "Joe",
ID: "A"
}, {
Owner: "Joe",
ID: "D"
}, {
Owner: "Joe",
ID: "D"
}];
var dropdown_cross1 = crossfilter(data);
var x_owner_filter=dropdown_cross1.dimension(function (d){
for (var key in d)
{
if(d[key] == "D")
{
//console.log("selected_text="+selected_text);
//console.log('key=' + key + ' value=' + d[key]);
console.log(d[key]);
return d[key];
}
}
});
//x_owner_filter.filter("D");
var y_owner_filter = x_owner_filter.group().reduceCount();
var size=y_owner_filter.size();
console.log("size="+size);
var size_ownertitle = y_owner_filter.top(size);
console.log(size_ownertitle);
输出
[Object { key="D", value=11}]
输出必须 [对象{键=" D",值= 3}]
我是crossfillter的新手,不知道问题在哪里?
以下是jsfiddle在浏览器控制台中查看输出。
查看更新 JSfiddle
答案 0 :(得分:0)
如果您希望计算Ds,那将是ID维度,这很简单:
var x_id_dim = dropdown_cross1.dimension(function (d){
return d.ID;
});
现在,Y值来自与维度相关联的组:
var y_id_group = x_id_dim.group().reduceCount();
您可能还需要所有者维度,请单独创建。
我怀疑这里的混淆可能是“尺寸”的交叉滤波器定义 - 它们实际上意味着“你想要的一些关键并且过滤”而不是X和Y中的尺寸。通常Y图表尺寸将来自小组聚合。