momo_li 发表于 2022-7-18 08:40:05

大量数据,网页画曲线,有没有保留曲线特征的压缩算法?

千万点级别的数据需要在网页上面绘制曲线,按照web上面各种常见曲线控件, 比如echart或者highchart的性能, 这个数量的点绘制起来很卡, 甚至会崩溃.
实际上因为屏幕的分辨率有限, 实际一条曲线也就是绘制几千个点. 在浏览器中, 有没有数据压缩的算法, 能够保留曲线中波动数据的特征, 降低点数?
比如将一千万个点, 压缩到十万点, 去掉波动不大的平稳数据, 保留波动的数据.

wochai 发表于 2022-7-18 09:36:34

绘制的时候自己处理不行吗?!
比如判断几个数据如果绘制在同一点,则只绘制一个!

momo_li 发表于 2022-7-18 10:20:31

wochai 发表于 2022-7-18 09:36
绘制的时候自己处理不行吗?!
比如判断几个数据如果绘制在同一点,则只绘制一个! ...
(引用自2楼)

自己写也行, 就是数据量大了之后代码执行速度问题, 压缩算法也是有些细节需要考虑, 所以看看有没有成熟高效的成品可用

智涅 发表于 2022-7-18 10:33:45

简单点,离散取几个点,算下平均值

momo_li 发表于 2022-7-18 10:42:14

智涅 发表于 2022-7-18 10:33
简单点,离散取几个点,算下平均值
(引用自4楼)

要保留曲线波动特征, 平均值处理, 会抹掉正负等幅值的波动,

zyqcome 发表于 2022-7-18 11:02:50

momo_li 发表于 2022-7-18 10:42
要保留曲线波动特征, 平均值处理, 会抹掉正负等幅值的波动,
(引用自5楼)

那就区间内不平均,显示最大值和最小值

gzhuli 发表于 2022-7-18 11:32:39

参考股票K线图,曲线表示平均值,竖线表示区间内最大值和最小值。

momo_li 发表于 2022-7-18 12:17:07

gzhuli 发表于 2022-7-18 11:32
参考股票K线图,曲线表示平均值,竖线表示区间内最大值和最小值。
(引用自7楼)

原来股票曲线的那些小柱子是干这个用的呀, 又学到了哈哈,
我感觉自己的这个想法可能有点多此一举, 成熟的曲线控件, 对于大数据的处理应该已经有了压缩算法,
毕竟常规屏幕横向分辨率也就是几千到头了, 曲线控件这种追求效率的东西, 开发时不会忽略这个问题,
如果控件本身用底层的语言做了压缩, 我再写的话估计也不能明显的提高效率.
个人的审美来看, 股票的那个曲线图样式实在是算不上漂亮{:lol:}

dellric 发表于 2022-7-18 12:22:13

把属于一个像素的N个点进行分析,找到平均值,最小值和最大值,把最小最大值用70%透明度显示,平均值用0%透明度显示

TrueOrFalse 发表于 2022-7-18 12:32:58

肯定是算法上想想办法,随着缩放不断展现曲线细节,想想地图缩放。

momo_li 发表于 2022-7-18 12:38:32

dellric 发表于 2022-7-18 12:22
把属于一个像素的N个点进行分析,找到平均值,最小值和最大值,把最小最大值用70%透明度显示,平均值用0%透 ...
(引用自9楼)

透明度倒是不至于
我的想法也就是将需要合并在一个点上的数据处理一下, 比如有一千个点公用一个坐标, 就将其筛选出最大的3个和最小的3个, 也就是将一千个点压缩到6个, 再交给曲线控件处理.
数据量大了之后, 这样的处理算法也是挺耗时的, 使用web前端开发的话估计执行效率更低,
对于这种, 我实际上也没观察过曲线控件是怎么处理的, 是不是在这个点的位置直接根据最高个最低值画一条竖线, 还是六个点中随便取一个取显示.
如果是后者, 宏观的图像那将损失很多特征,尤其是一些关键的跳变特征, 如果是前者, 那显示处理的运算量其实也挺大.
这种曲线的显示, 在示波器之类的设备上尤其重要, 现在存储深度这么大, 屏幕的显示分辨率又那么低, 如果不好好处理, 就很难找到一些异常的数据了.

jathenal 发表于 2022-7-18 13:13:49

有啊,haar小波变换可以干这个的,能提取各个尺度下图像数据的特征,一次性预处理完毕,后面使用时就不需要重复计算了。
不过常用都是处理2维数组(图像数据)的haar小波算法,LZ可以同法写个1维的,应该比2维还简单些。

qtechzdh 发表于 2022-7-18 13:42:23

看看示波器怎么处理的

momo_li 发表于 2022-7-18 13:53:08

qtechzdh 发表于 2022-7-18 13:42
看看示波器怎么处理的
(引用自13楼)

示波器这个太特殊, 估计是fpga之类的硬件处理的, 我想找一个适合web开发的现成算法用用.
页: [1]
查看完整版本: 大量数据,网页画曲线,有没有保留曲线特征的压缩算法?