我正在使用Flot Charts显示折线图来编程折线图。
为了减少要显示的点数,我通过在同一小时内对每个数据点应用平均值函数来进行下采样。</ p>
但是,最近我发现了最大三角形三桶算法: http://flot.base.is/
使用这种算法与使用平均(每分钟,每小时,每天……)这样的简单函数有什么区别?
要加快长时间查询的速度,是否有必要通过在每个月的数据上应用LTTB,并在客户端上应用另一个LTTB来预先计算服务器端的sql表,汇总数据?
答案 0 :(得分:0)
1:就我而言,平均值的问题在于它们会破坏样本之间的巨大差异-我的峰值和谷值比它们之间发生的事情更为重要。 3buckets算法的要点是尝试保留那些拐点(峰值/谷值),而不必担心始终在数据相似或相同的情况下向您显示。
因此,在我的情况下,数据通常都是相同的(或足够接近–温度数据),直到样品X出现一点小变化(在图表中显示很重要),桶算法才是完美的。
而且-由于桶算法是参数化的,因此您可以更改值(保留多少数据),并查看哪些值使最多的数据消失,同时在视觉上看起来几乎相同,并决定可以在图表之前省去多少数据已经删除了太多数据。
幼稚的方法是抽取(从N个样本中删除X个),但是如果这是您关心的离群值并且该算法对离群值有影响,会发生什么?因此,您可以更改抽取率,以便如果差异太大-则不会破坏该样本。这是该概念的更复杂的版本。
2:取决于您可以多么快速地计算所有数据(如果数据发生更改)以及其他各种因素。这取决于你。从我的角度来看,一旦我的数据成为过去,并且“选择”了一个样本来代表该存储桶的值,就不会更改它,并且我可以保存它,而无需再次进行计算。
由于您的问题有点老了,您最终会做什么?