使用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
}
Run Code Online (Sandbox Code Playgroud)
是否可以跟踪每组的最大值和最小值?我无法弄清楚如何将所有元素保存在一个巨大的数组中并执行d3.min/d3.max.似乎添加/删除数据效率极低.
我还想方设法告诉Crossfilter从头开始完全重建组,而不是从现有组中删除项目.如果应用过滤器,则重置并重建该组.什么都不明显.