2016-04-26 7 views
2

フィドル:https://jsfiddle.net/33228p1d/4/は、集約(/ D3/DC Crossfilter/Reductio)による凝集体を分割

は、ページ上のCost Averageチャートを参照。

var cpa = ndx.dimension(function (d) { 
    return d.location; 
}); 
var cpaGroup = cpa.group().reduceSum(function (d) { 
    return d.total; 
}); 

チャート自体:次のコードを使用してレンダリングチャート(簡潔にするために中断スタイリング)今

cpaChart 
    .dimension(cpa) 
    .group(cpaGroup) 
    .label(function (d) { 
     return d.key + " $" + d.value; 
    }) 
    .title(function (d) { 
     return d.value; 
    }) 
    .elasticX(true) 
    .ordering(function (d) { return -d.value }) 
    .xAxis().ticks(4); 

は、正確FrontBack位置の合計を示しています。

私がしたいことは、ショートータルを1か所あたりの平均費用を示すためにその場所の一意のPOの数で割ったものです。

たとえば、Backの場合、合計で$396の2つの固有の注文があります。私が見たいのは396/2で、場所あたりの平均費用は198です。その後、

答えて

2

それでもReductioを使用するために喜んでいる場合は、同じグループのトラックの合計とexceptionCountとvalueAccessorアクセサでそれらを分ける:

var cpaGroup = reductio() 
    .sum('total') 
    .exception(function(d) { return d.po; }) 
     .exceptionCount(true)(cpa.group()); 

    cpaChart 
     .width(400) 
     .height(200) 
     .margins({ top: 20, left: 10, right: 10, bottom: 20 }) 
     .dimension(cpa) 
     .group(cpaGroup) 
     .ordinalColors(['#3182bd', '#6baed6', '#9ecae1', '#c6dbef', '#dadaeb']) 
     .label(function (d) { 
      return d.key + " $" + (Math.round(d.value.sum/d.value.exceptionCount)); 
     }) 
     .title(function (d) { 
      return d.value; 
     }) 
     .valueAccessor(function(d) { 
      return d.value.sum/d.value.exceptionCount; 
     }) 
     .elasticX(true) 
     .ordering(function (d) { return -d.value }) 
     .xAxis().ticks(4); 

例:https://jsfiddle.net/7wbcref9/