dc.js boxplot b.map(...).sort 不是函数
dc.js boxplot b.map(...).sort is not a function
我正在尝试生成箱线图。在创建维度和组之后,我遵循了给出的示例
https://github.com/dc-js/dc.js/blob/master/web/examples/box-plot.html
我正在使用 reductio 来简化缩减:
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:
.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.
我添加了一个 fiddle 来重现这个问题。 https://jsfiddle.net/momhzyxp/7/
干杯
您可以使用 reductio.dataList 生成落入每个 bin 的原始行的数组,而不是使用 reductio 将值聚合成总和:
var reducer = reductio();
reducer
.value('_rows')
.dataList(true);
reducer(skuGroup);
然后,假设你想用 each ta
除以 each nc
(不确定你正在尝试在这里做),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.ta
和 v.nc
做任何你喜欢的事)。
你的 fiddle 的分支:https://jsfiddle.net/oawbzdgy/11/
我正在尝试生成箱线图。在创建维度和组之后,我遵循了给出的示例 https://github.com/dc-js/dc.js/blob/master/web/examples/box-plot.html
我正在使用 reductio 来简化缩减:
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:
.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.
我添加了一个 fiddle 来重现这个问题。 https://jsfiddle.net/momhzyxp/7/
干杯
您可以使用 reductio.dataList 生成落入每个 bin 的原始行的数组,而不是使用 reductio 将值聚合成总和:
var reducer = reductio();
reducer
.value('_rows')
.dataList(true);
reducer(skuGroup);
然后,假设你想用 each ta
除以 each nc
(不确定你正在尝试在这里做),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.ta
和 v.nc
做任何你喜欢的事)。
你的 fiddle 的分支:https://jsfiddle.net/oawbzdgy/11/