如何使用crossfilter JS获取x轴上的数据和y轴上出现的次数?

时间:2015-07-10 12:55:35

标签: jquery d3.js dc.js crossfilter

我使用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

1 个答案:

答案 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图表尺寸将来自小组聚合。