dc.js crossfilter.js 中自定义 reduce 函数中的自定义排序

custom ordering in custom reduce functions in dc.js crossfilter.js

我有以下自定义 reduce 函数

  function reduceAdd(p, v) {
  p.vol_t += v.oqt;
  p.prc_t += v.it;
  ++p.count;
  // p.average = d3.round((p.total / p.count), 2);
  return p;
}

function reduceRemove(p, v) {
  p.vol_t -= v.oqt;
  p.prc_t -= v.it;
  --p.count;
  // p.average = d3.round((p.total / p.count), 2);
  return p;
}

function reduceInitial() {
  return {
    vol_t:  0.0,
    prc_t:  0.0,
    count:  0,
  };
}

我的数据模型如下:

    [{cat:'a', oqt:23.0, it: 45.0},
    {cat:'b', oqt:25.0, it: 5.0}, 
    {cat:'b', oqt:22.0, it: 25.0},
    {cat:'c', oqt:17.0, it: 35.0}]

我正在尝试用 dc.js 绘制气泡图,其中 vol_t 作为 X(keyAccessor),prc_t 作为 Y 轴(valueAccessor)并算作 radiusAccessor。如何找到所有组的最大值和最小值。我的组基于类别 'cat' 维度。

谢谢!

您可以根据组的值定义任意顺序:https://github.com/crossfilter/crossfilter/wiki/API-Reference#group_order

但是,如果您使用的是 dc.js 气泡图,我认为没有必要定义任何特定的顺序。您只需要定义适当的访问器。

通过使用 d3.extent 并传递返回数量和价格的类别组和访问器函数解决了这个问题。