Javascript:如何从时间戳数组中查找时间间隔中的最大N个时间戳

标签 javascript d3.js crossfilter

我需要平移和缩放大量带有时间戳的数据。数据太多,无法将其全部绑定(bind)到 dom,否则浏览器会陷入困境。带时间戳的数据按从小到大的顺序排列。

因此,我们的想法是找到适合显示的 x 轴上的开始时间点和结束时间点之间的数据,并将其细化为浏览器可以处理的合理数量 N。

这可以通过将开始点和停止点之间的间隔划分为 N 个引用时间戳,然后在最接近每个引用的数据中找到时间戳来完成。

我可以对此进行编码,但可能不如现有解决方案那么有效。

是否有一个库(可能是交叉过滤器)可以做到这一点?

最佳答案

您有一个有序的数据数组,并且您正在搜索数据中的任意点。您的最佳搜索算法是二分搜索,它将在 O(log(n)) 时间内找到开始点和结束点的索引。

Underscore.js 具有二分搜索的实现:http://underscorejs.org/#indexOf

不了解交叉过滤器,但检查他们的范围过滤器。

一旦有了开始和结束索引,您就知道它们之间有多少个点。然后你就可以决定如何瘦身了。对于如何瘦身,没有一个正确的答案,这取决于数据和你讲述的故事。您可以对每个第 n 个点进行采样,可以平均或最大分区,或许多其他选项。

无论您如何选择细化,crossplot 都可以通过“分组”(例如,分成等宽分区)然后“减少”组来实现。

关于Javascript:如何从时间戳数组中查找时间间隔中的最大N个时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35355522/

相关文章:

javascript - 在 ng-repeat 元素上添加事件

javascript - Vue - v-如果列表中没有具有该名称的项目,则显示图像

javascript - 强制调整点图像大小

javascript - 带有 jQ​​uery 和 D3.js 的 donut chart 插件在事件中需要帮助

javascript - 在 dc 图表库中限制折线图放大最多小时

javascript - 如何使用 dc.js 创建堆积条形图?

javascript ArrayBuffer,它是做什么用的?

d3.js - 使用 Crossfilter 增加旋转轴标签的边距

javascript - querySelectorAll 是在多个图表中选择元素的好方法吗?

javascript - 如何通过 ID 有效地从交叉过滤器中删除/修改数据