2017-07-12 8 views
1

私はボックスプロットを生成しようとしています。ディメンションとグループを作成した後、私は削減を容易にするためにreductioを使用してい https://github.com/dc-js/dc.js/blob/master/web/examples/box-plot.htmldc.js boxplot b.map(...)。sortは関数ではありません

で与えられた例を踏襲してきました。私も自分のグループのためにvalueAccessorを使用してい

var ndx = crossfilter(ds); 
var skuDim = ndx.dimension(function(d){ return d.sku; }); 
var skuGroup = skuDim.group(); 

var reducer = reductio(); 
reducer 
    .value('_nc') 
    .sum(function(d){ 
     return d.nc; 
    }); 
reducer 
    .value('_ta') 
    .sum(function(d){ 
     return d.ta; 
    }); 

reducer(skuGroup); 

.valueAccessor(function(p){ 
    return p.value._nc.sum ? Math.round(p.value._ta.sum/p.value._nc.sum * 100)/100 : 0; 
    }) 

が、私はこのエラーを取得しています:

TypeError: b.map(...).sort is not a function. 

私はこの問題を再現するために手伝いを追加しました。 https://jsfiddle.net/momhzyxp/7/

乾杯

+1

箱ひげ図は、それぞれの値が配列であることを期待 - あなたはあなたの例では、データを既に集計しているように見えます。代わりに、実際の値を指定する必要があります(リンクされた例のように)。私はこれを行うreductioの方法がわからないが、私はタグを追加したとうまくいけば@EthanJewettがドロップされる - それは[valueList](https://github.com/crossfilter/reductio#aggregations- reference-aggregations-reductio-value-list)または[dataList](https://github.com/crossfilter/reductio#aggregations-standard-aggregations-reductio-data-list)を参照してください。 – Gordon

+0

ありがとう@Gordon。値の配列を渡す。それは今働く。しかし、reductioを働かせることはできません:| – bashhike

答えて

1

代わりに合計に値を集計するreductioを使用しての、あなたが各ビンに分類元の行の配列を生成するためにreductio.dataListを使用することができます。

var reducer = reductio(); 
reducer 
    .value('_rows') 
    .dataList(true); 

reducer(skuGroup); 

次に、あなたがしたいと仮定すると

01: nc(あなたがここでやろうとしているかわからない)によって taを分割し、 valueAccessorは次のようになります
.valueAccessor(function(p){ 
    var values = p.value._rows.dataList.map(function(v, i) { 
     return v.nc ? Math.round(v.ta/v.nc * 100)/100 : 0; 
    }); 
    return values; 
    }) 

(またはそれぞれv.tav.ncで好きなようにすることができます)。あなたのフィドルの

フォーク:https://jsfiddle.net/oawbzdgy/11/

+0

それだけです!ありがとう@ゴードン。 – bashhike

関連する問題