我试图使用D3,Crossfilter和DC的组合产生交互箱线图,主要利用这个例子: https://github.com/dc-js/dc.js/blob/master/web/examples/box- plot.html
我的数据看起来更像是这样的:
id date met1
6368 10/24/2013 0.84
6369 10/24/2013 0.67
6374 10/24/2013 0.96
6375 10/24/2013 0.97
用约50万个数据点,这正常工作的一切除了箱图别的。 该代码工作正常和箱线图都很好,但是当我在其他地方更换过滤器需要永远的箱线图更新:
var met1Dim = data.dimension(function(d) {return "metric 01";});
var met1Values = met1Dim.group().reduce(
function(p, v) {
p.push(v.met1);
return p;
},
function(p,v) {
p.splice(p.indexOf(v.met1), 1);
return p;
},
function() {
return [];
}
性能大幅提高(但仍不够完美),当我通过整数作为数据(只是用parseInt函数替换v.met1(v.met1 * 100)),但是这是那种半称职的,我想展示在其适当范围内的数据,而不是强迫一切都变成一个整数。 当我删除的数据集时,最显著放缓,我认为这是片(的indexOf())这是(使用浮点数时)放缓都记录下来。 有什么我可以做,使这个操作更快? 我想也许使用的ID数据的关联数组是一个关键,但我不知道如何关联数组传递到降低()函数。
谢谢。