使用 Crossfilter (https://github.com/square/crossfilter) 时,我指定了在组中添加和删除数据时要使用的函数。跟踪运行平均值(使用 CoffeeScript)相当简单:
reduceAdd = (p, v) ->
++p.count;
p.sum += v.digit;
p
reduceRemove = (p, v) ->
--p.count;
p.sum -= v.digit;
p
reduceInitial = ->
{
count: 0
sum: 0
average: ->
return 0 if this.count == 0
return this.sum / this.count
}
是否可以跟踪每组的最大值和最小值?我想不出除了将所有元素保存在一个巨大的数组中并执行 d3.min/d3.max 之外的方法。添加/删除数据似乎效率极低。
我还寻找一种方法来告诉 Crossfilter 从头开始完全重建组,而不是从现有组中删除项目。如果应用了筛选器,则会重置并重建该组。没有什么明显的。
最佳答案
您可以使用 dimension.top(1)和 dimension.bottom(1)检索当前的最小值和最大值。这些方法尊重交叉过滤器上可能处于事件状态的任何过滤器。
关于javascript - 使用 Crossfilter,是否可以在分组时跟踪最大/最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10509478/