D3.js从大型数据集中选择要显示的数据的一部分

时间:2015-02-16 13:58:06

标签: d3.js bigdata

我有大量的实时传入数据用于可视化。我有数据集中的速度和时间。就像你考虑CSV格式一样,它就像下面的

Speed, Time
s1,    t1
.......
sn,tn

但是我想想象一下t1-t10的速度。我怎样才能做到这一点?从更广泛的意义上说,我应该能够选择我将在图表中保留多少时间帧。可能是从t1-t10,t5-t10或t10-t25等。

有人这样处理过这样的问题吗?

2 个答案:

答案 0 :(得分:1)

虽然.filter方法通常是解决数据减少以便以后处理或可视化的最简单方法,但在您的特定示例中,我更倾向于采用其他策略:

  1. 使用.sort data.sort(function(a, b){return a.Time > b.Time;}))
  2. 对数组进行排序
  3. 创建bisector var bisect = d3.bisector(function(d) { return d.Time; });
  4. 我们需要平分器leftright,所以:

    var biLeft = bisec.left, biRight = bisec.right;

  5. 现在我们可以使用这些函数对数组进行切片并提取所需的信息:

    var subset = data.slice(biLeft(data,“t5”),biRight(data,“t10”));

答案 1 :(得分:0)

我找到了解决问题的好方法。 在开始时,我可以使用以下代码对完整数据进行切片:

var data=data.slice(startIndex,endIndex);

通过这种方式,通过改变起始和结束参数,我可以轻松地改变图表