搜索
bottom↓
回复: 13

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

[复制链接]

出500入109汤圆

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

出100入0汤圆

发表于 2022-7-18 09:36:34 | 显示全部楼层
绘制的时候自己处理不行吗?!
比如判断几个数据如果绘制在同一点,则只绘制一个!

出500入109汤圆

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

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

出40入518汤圆

发表于 2022-7-18 10:33:45 | 显示全部楼层
简单点,离散取几个点,算下平均值

出500入109汤圆

 楼主| 发表于 2022-7-18 10:42:14 | 显示全部楼层
智涅 发表于 2022-7-18 10:33
简单点,离散取几个点,算下平均值
(引用自4楼)

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

出0入0汤圆

发表于 2022-7-18 11:02:50 来自手机 | 显示全部楼层
momo_li 发表于 2022-7-18 10:42
要保留曲线波动特征, 平均值处理, 会抹掉正负等幅值的波动,
(引用自5楼)

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

出0入618汤圆

发表于 2022-7-18 11:32:39 | 显示全部楼层
参考股票K线图,曲线表示平均值,竖线表示区间内最大值和最小值。

出500入109汤圆

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

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

出0入71汤圆

发表于 2022-7-18 12:22:13 | 显示全部楼层
把属于一个像素的N个点进行分析,找到平均值,最小值和最大值,把最小最大值用70%透明度显示,平均值用0%透明度显示

出0入0汤圆

发表于 2022-7-18 12:32:58 | 显示全部楼层
肯定是算法上想想办法,随着缩放不断展现曲线细节,想想地图缩放。

出500入109汤圆

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

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

出0入0汤圆

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

出10入18汤圆

发表于 2022-7-18 13:42:23 来自手机 | 显示全部楼层
看看示波器怎么处理的

出500入109汤圆

 楼主| 发表于 2022-7-18 13:53:08 | 显示全部楼层
qtechzdh 发表于 2022-7-18 13:42
看看示波器怎么处理的
(引用自13楼)

示波器这个太特殊, 估计是fpga之类的硬件处理的, 我想找一个适合web开发的现成算法用用.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 06:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表