2016-11-16 2 views
1

How to create a row chart from multiple columns의 코드로 작업하고 있습니다.dc.js 다중 열 행 차트로 평균 계산

그러나 데이터의 평균을 얻어야합니다. 나는 보통 값 접근자를 통해이 작업을 수행하지만이 기능으로이 작업을 수행하는 방법을 잘 모르고 있습니다.

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(); 
     } 
    }; 
} 

는 I는 각 열의 합 전류를 확인하고 현재 필터 상태에 기초하여, 행 카운트하여 분할 할 수 있어야한다. 당신에게 그런

var _recordCount = dim.groupAll(); 

:

코드는 multi column fiddle

답변

1

레코드의 수를 얻을 수있는 가장 쉬운 방법은 기본 감소 다른 crossfilter.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