我正在使用How to create a row chart from multiple columns中的代码。
但是我需要获得数据的平均值。我通常通过值访问器执行此操作,但不确定如何使用此功能执行此操作。
function regroup(dim, cols) {
var _groupAll = dim.groupAll().reduce(
function(p, v) { // add
cols.forEach(function(c) {
p[c] += v[c];
});
return p;
},
function(p, v) { // remove
cols.forEach(function(c) {
p[c] -= v[c];
});
return p;
},
function() { // init
var p = {};
cols.forEach(function(c) {
p[c] = 0;
});
return p;
});
return {
all: function() {
// or _.pairs, anything to turn the object into an array
return d3.map(_groupAll.value()).entries();
}
};
}
我只需要能够得到每列的当前总和,并根据当前过滤器状态将其除以行数。
代码类似于这个小提琴multi column fiddle
中的代码答案 0 :(得分:1)
获取记录计数的最简单方法似乎是使用默认缩减创建另一个crossfilter.groupAll()
:
var _recordCount = dim.groupAll();
然后,您可以在旋转结果时将每个总和除以当前计数:
all: function() {
var count = _recordCount.value();
// or _.pairs, anything to turn the object into an array
return d3.map(_groupAll.value())
.entries().map(function(kv) {
return {key: kv.key, value: kv.value / count};
});
}
这里有更新的小提琴:http://jsfiddle.net/37uET/32/