我的数据格式为[[date,value],...]。
例如:
[[date1, value1], [date1, value2], [date2, value3], ....]]
假设我想为每个日期仅选择5个值,这5个值应该是该日期的前5个值。
我的crossfilter / dimension应该是什么样的?
答案 0 :(得分:1)
您可以使用{D3}使用d3.nest
轻松完成此操作。
var topValuesByDate = d3.nest()
.key(function(d){ return d.date; })
.rollup(function(leaves){
return leaves.map(function(d){
return d.value;
}).sort(d3.descending).slice(0, 5);
})
.entries(data);
基本思路是按日期对值进行分组,然后使用rollup
确定每个日期的前5个值。
我还使用如下构造的模拟数据制作a demo:
var data = [];
d3.range(1, 4).forEach(function(i){
d3.range(10).forEach(function(j){
data.push( {date: "2015/01/0" + i, value: j } );
});
});