Tat*_*nen 11 php mysql algorithm optimization graph
我有一个包含10万个数据点的数据集,我必须在图表上绘制.得到的图形宽度约为500px,因此对于每个像素,将有大约200个数据点,这似乎是非常不必要的.
我需要找到一种方法来摆脱多余的数据点,而不会丢失图形的形状,以加快渲染速度.目前,所有100 000点的渲染可能需要10秒以上,因为我还使用了抗锯齿和其他"效果".
我试图通过仅采用每200个数据点并绘制它们来解决这个问题,但这会导致一些更重要的点丢失(想想我希望能够显示的图中的峰值).我还想过将数据集分成200个数据点的块,然后从每个块中获取最大值,但这也无法工作.
有人知道一种适合我需要的方法吗?我使用的语言是PHP,图形由GD创建,数据来自MySQL,因此欢迎对其中一些进行优化.
数据采用以下格式:
Datetime               Value
2005-01-30 00:00:00    35.30
2005-01-30 01:00:00    35.65
2005-01-30 02:00:00    36.15
2005-01-30 03:00:00    35.95
...
结果图目前看起来像这样:
Fra*_* B. 14
我知道这个问题已经很老了,但我的问题几乎相似.
为了减少要显示的点数而不影响图形的形状,我们使用Ramer-Douglas-Peucker算法.未压缩图形与具有该算法的图形之间的形状差异是不明显的.
在我看来,200中的1是相当严重的数据丢失,如果那些应该用图表上的一个值表示的200个值不足以被平均值有意义地替换,那么你自己就有问题了.如果平均值不够好,你必须找到一个标准来告诉哪些数据更重要并且应该包括在内,我们无法帮助你,因为我们不知道它是什么类型的数据,它的统计特性,或为什么任何价值比另一个更重要.有了这些额外的信息,也许可以给出更具体的答案.
编辑:在查看图表之后,似乎在给定的时间间隔内您需要最小值和最大值,因为深蓝色区域是这两者之间的值,对吗?也许您可以获取100个值并根据最小值,最大值和平均值生成图表,以便图表中的每个点都使用6而不是200个值,或类似的值.
| 归档时间: | 
 | 
| 查看次数: | 4667 次 | 
| 最近记录: |