How to filter, group and plot data using crossfilter and dc.js
我有以下数据和其计数的条形图。这是jsfiddle。我想过滤尺寸,以便在条形图中只有Alyssa和Bob。我尝试了使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | 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:"A" }, { Owner:"Bob", ID:"C" }, { Owner:"Bob", ID:"C" }, { Owner:"Bob", ID:"C" }, { Owner:"Bob", ID:"C" }, { Owner:"Bob", ID:"C" }, { Owner:"Bob", ID:"D" }, { Owner:"Joe", ID:"A" }, { Owner:"Joe", ID:"A" }, { Owner:"Joe", ID:"D" }, { Owner:"Joe", ID:"D" }, { Owner:"Joe", ID:"E" }]; var ndx = crossfilter(data); var XDimension = ndx.dimension(function (d) { return d.Owner; }); var YDimension = XDimension.group().reduceCount(function (d) { return d.Owner; }); dc.barChart("#Chart") .width(480).height(300) .dimension(XDimension) .group(YDimension) .centerBar(true) .gap(56) .x(d3.scale.ordinal().domain(XDimension)) .xUnits(dc.units.ordinal) .xAxisLabel("Market Developer") .yAxisLabel("Unique Counts") .elasticY(true) .xAxis().tickFormat(function (v) { return v; }); dc.renderAll(); |
在将数据添加到交叉过滤器之前是否可以过滤数据?
1 2 | data = data.filter(function (d) { return d.Owner !=="Joe"; }); var ndx = crossfilter(data); |
我目前正在处理类似的问题,这是一个临时解决方案。我尝试像这样过滤维度:
1 2 | var filtered = XDimension.filter(function (d) { return d !=="Joe"; }); var YDimension = filtered.group().reduceCount(function (d) { return d.Owner }); |
当我打印出"已过滤"时,我看到尺寸已正确过滤。但是,绘制图表时," Joe "仍在数据集中。
如果我找到更好的解决方案,我会回发..