dc.js boxplot b.map(...)。sort不是一个函数

我正在尝试生成箱形图。 创建维度和组之后,我按照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.

我已经添加了一个小提琴来复制这个问题。 https://jsfiddle.net/momhzyxp/7/

干杯


您可以使用reductio.dataList来生成落入每个bin的原始行数组,而不是使用reductio来将这些值聚合为和。

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

reducer(skuGroup);

然后,假设你想通过每个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做任何你喜欢的v.nc )。

你小提琴的叉子:https://jsfiddle.net/oawbzdgy/11/

链接地址: http://www.djcxy.com/p/32805.html

上一篇: dc.js boxplot b.map(...).sort is not a function

下一篇: crossfilter how to simply get the sum total from the values in a group