2016-11-16 105 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