D3.js 从大型数据集中选择一部分数据进行可视化

D3.js selecting a part of data to be visualized from a large dataset

我有大量实时传入数据用于可视化。我有数据集中的速度和时间。如果您认为 CSV 格式如下所示

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

但我只想形象化说 t1-t10 的速度。我怎样才能做到这一点?从更广泛的意义上讲,我应该能够 select 我将在图表中保留多少时间范围。可能来自 t1-t10、t5-t10 或 t10-t25 等

有人遇到过这样的问题吗?

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

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

这样通过改变开始和结束参数我可以很容易地改变地块

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

  1. .sortdata.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"));