如何在dc.js中每个维度有多个图表?

时间:2015-07-28 20:29:13

标签: javascript dc.js crossfilter

假设以下数据集:

var data = [
    {
        "userId": "u1",
        "questionId": "q1",
        "answerId": "a1"
    },
    ...
];

我想绘制一个饼图列表。每个饼图对应一个问题,其中馅饼是该问题的答案。

现在,当有人点击某个饼来选择一个答案时,它会更新剩余的饼图给那些也选择了这个答案的用户。

基本上,用例是"用户回答" a1"问题" q1"也回答了问题" q2"随着馅饼等的分配。

我不确定什么是最佳的继续方式。 我应该使用几个crossfilter实例吗?只有一个可行吗?我该如何实现这个过滤器?过滤器似乎适用于用户,但尺寸是答案......

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

通常从crossfilter获得简单的答案意味着构建数据,因此它是您想要计算的行的平面数组。在这里,您想要计算用户数。

如果这是您的整个可视化,并且您可以重新构建数据,那么获得所需内容的最简单方法是为每个用户设置一行:

[{"userId": "u1",
    "q1": "a1",
    "q2": "a2",
    ...
},
 {"userId": "u2",
    "q1": "a1",
    "q2": "a2", 
    ... 
}]

现在,只需在每个问题上键入维度,每个问题都有默认的reduceCount组,您就可以自动获得所要求的内容。

尺寸将如下:

var dim = cf.dimension(function(d) { 
    return d.q1; 
});