使用qt绘制显示大数据量的曲线图,有什么好的办法?
具体流程为:读取一个二进制文件,文件最大2GB,数据类型为short,一个数据点占2bytes。目前使用qcustomplot来绘制波形,但是,不论用setdata还是addData,都需要将数据复制一份,转为QVector 的double类型,或者QPointF,无法直接使用导入的数据。而使用QVector,它的开辟内存机制,导致了使用数据在几百MB时,Qvector相应开辟的内存就达到了几GB,qcustomplot绘图也会很慢。原始数据量更大的话(如2GB),会导致QVector申请内存失败。试着修改了addData部分的源码,但是水平有限,没有实现。
对比查看了QWT,发现它的内存机制也是类似。
哪位老板有好的思路?或者有没有老板实现了qt绘图使用自己malloc的数据缓冲区的数据作为数据源,从而不使用QVector的。
这么多点,你屏幕的分辨率也显示不过来,有以下建议可尝试
1 qcustomplot 是对的思路,目前来看,qcustomplot 效率已经很好了
2 可以对数据进行抽稀显示或者分段显示,没必要一次全部都显示完,不然对计算机资源也有一定的要求
剩下的就是自己撸一个了,使用OpenGL,不过目前能力有限,我也是用了qcustomplot
固定长度的话,分段抽稀,同时判断每段中的极值(最小值/最大值)这样试试?
段数越多,失真度越小吧
临时想的办法,只保留了部分关键点
老板,问题解决了吗,我现在有同样的问题
问题描述太简单