让下面的数据集:
var dataset = [
{
"user": "u1",
"question1": "answer1",
"question2": "answer2",
...
},
...
];
假设此数据集未完成:一些用户可能回答了一个问题,但没有回答另一个问题。因此,此数据集有一些空白,其中没有出现值"questionX“。
假设我们为每个问题创建了相关的饼图,如下所示:
var questions = ["question1", "question2", ...];
var cf = crossfilter(dataset);
for (var i = 0; i < questions.length; i++) {
var questionDim = cf.dimension(function(d) { return d[questions[i]]});
var questionGrp = questionDim.group().reduceCount();
plotPieChart("#dc-" + questions[i], questionDim, questionGrp); // helper function to plot standard DC pie chart based on a dimension and group.
}
似乎组没有正确地处理缺失的值,并且仍然将缺失的点分类为第一个可能的类别。
谢谢!
发布于 2015-07-29 14:03:52
不,这不是虫子。交叉过滤器的尺寸必须是自然有序或奇怪的事情发生。
您应该定义维度来处理未定义的值。你可以这样做:
var questionDim = cf.dimension(function(d) { return d[questions[i]] ? d[questions[i]] : "No answer"});
然后,当你定义你的dc.js图表时,你可以过滤掉你不想要的数据,如果你不想在你的饼图中显示非答案(尽管你可能应该显示它们,以便让观众了解回答上述问题的人的比例):
dc.pieChart('#pie-chart')
.group(questionGrp)
.data(function(group) {
return group.all()
.filter(function(d) { return d.key !== "No answer"; });
})
https://stackoverflow.com/questions/31699747
复制相似问题