2016-11-16 84 views
1

我使用与How to create a row chart from multiple columns代码工作。dc.js计算与多列平均rowchart

不过,我需要获取数据的平均值。我通常做这种通过价值访问,但我不确定如何使用这一功能做到这一点。

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

回答

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/

+0

Hrrrrmmm,我认为应该是'ndx.groupAll()'所描述的。无休止地混淆其中的奥妙对象观察哪些筛选器。 – Gordon