如何有效地使用 QCustomPlot 绘制大型时间序列?

     2023-02-17     45

关键词:

【中文标题】如何有效地使用 QCustomPlot 绘制大型时间序列?【英文标题】:How to plot large time series with QCustomPlot efficiently? 【发布时间】:2014-12-11 07:44:52 【问题描述】:

我目前正在使用QCustomPlot 在 Qt 中绘制数字信号,但似乎当样本数大于 10000000 时,操作变得非常缓慢。我有一个time 向量和一个data 向量,我正在设置这样的数据:

QCustomPlot *plot;
QCPGraph *graph;
graph->setData(time, data); 

有没有机会提高效率?

【问题讨论】:

【参考方案1】:

因为 QCustomPlot 在内部使用 QCPDataMap(这是 QMap<double, QCPData>typedef),这意味着它使用映射来存储按 x 坐标(键)排序的实际数据。不幸的是,QCPGraph::setData(const QVector<double> &x, const QVector<double> &y) 方法没有利用样本可以排序并且不使用插入提示这一事实,因此这显着改善了结果:

QCPDataMap *data = new QCPDataMap();
size_t len = x.size();
auto xp = std::begin(x);
auto yp = std::begin(y);
while (len--)
    data->insertMulti(data->constEnd(), *xp, QCPData(*xp++, *yp++)); 
graph->setData(data);

我不认为 std::maps 或 QMaps 是在 X、Y 图上存储样本的最佳结构,因为对地图中的每个条目都进行了新的分配和释放,我们谈论的是数百万其中。 QCustomPlot 应该使用自定义分配器实现自定义地图类以避免这些内存问题。

【讨论】:

如何有效地为大型核心数据集建立关系?

】如何有效地为大型核心数据集建立关系?【英文标题】:HowdoIsetuprelationshipforlargecoredatasetsefficiently?【发布时间】:2014-05-3123:51:42【问题描述】:我有两个实体Drink和Breweries。我有Json中的数据,我正在为每个数据构建核心数据... 查看详情

如何有效地将 hadoop 与大型 MySQL 数据库一起使用?

】如何有效地将hadoop与大型MySQL数据库一起使用?【英文标题】:HowcanIeffectivelyusehadoopwithalargeMySQLdatabase?【发布时间】:2014-11-2618:45:54【问题描述】:我对hadoop和MapReduce比较陌生,但我想用它来分析大量数据。这些数据代表大约1... 查看详情

如何使用 PHP 和 MySQL 有效地对大型数据集进行分页?

】如何使用PHP和MySQL有效地对大型数据集进行分页?【英文标题】:HowtoefficientlypaginatelargedatasetswithPHPandMySQL?【发布时间】:2010-11-2414:54:10【问题描述】:你们有些人可能知道,在MySQL中使用LIMIT关键字并不妨碍它读取前面的记录... 查看详情

如何有效地绘制数千个顶点?

】如何有效地绘制数千个顶点?【英文标题】:HowcanIefficientlydrawthousandsofvertices?【发布时间】:2010-09-2101:49:57【问题描述】:我目前正在编写一个交互式模拟器,它显示粒子系统的演变。我正在使用VisualStudio在Windows732位上进行... 查看详情

使用 PySide 时,如何有效地将数据从 NumPy 数组传输到 QPolygonF?

】使用PySide时,如何有效地将数据从NumPy数组传输到QPolygonF?【英文标题】:HowcanIefficientlytransferdatafromaNumPyarraytoaQPolygonFwhenusingPySide?【发布时间】:2013-12-0520:27:51【问题描述】:我想在PyQt4/PySide应用程序中绘制带有许多控制点的... 查看详情

qcustomplot使用分享层(完结)

...总是想把1.3.2版本拿出来比较一下,这篇文章也不例外。QCustomPlot2.0.0beta版本比1.3.2release版本有一个很大的改进那就是分层绘制,所谓分层绘制就是把一张图分几张图来绘制,最后在把这分开的几张图统一绘制到一张图上,比如... 查看详情

qcustomplot(二):图形绘制基础

参考技术A本文为QCustomPlot官方教程的中文翻译版。本教程使用customPlot指针指向QCustomPlot实例。如果您在QtCreator中提升了一个小部件,可以通过ui->customPlot(或您为小部件指定的任何名称)访问相应的小部件。您可以通过customPlot... 查看详情

QCustomPlot 重新绘制 QCPLayer

】QCustomPlot重新绘制QCPLayer【英文标题】:QCustomPlotreplotQCPLayer【发布时间】:2018-03-2516:03:44【问题描述】:我正在尝试弄清楚如何使用QCPLayer仅重新绘制图中的某些项目。qcustomplotdocumentation声明如下:如果你经常需要调用一个完... 查看详情

如何有效地从大型 Excel 文档中检索所有字符串

】如何有效地从大型Excel文档中检索所有字符串【英文标题】:HowtoretrieveefficientlyallstringsfromalargeExceldocuments【发布时间】:2020-02-2515:55:30【问题描述】:应由.NET读取Excel电子表格。使用属性Value从活动范围中读取所有值非常有效... 查看详情

如何有效地绘制单点

】如何有效地绘制单点【英文标题】:Howtodrawsinglepointefficiently【发布时间】:2013-09-1515:23:07【问题描述】:我有一个想要模拟的水面。为了在表面上添加雨滴,我只需要绘制一个点。我有一个代码(在OpenGL2.0中):floatrainDrop[3]=... 查看详情

使用qt绘图控件qcustomplot绘制波形图(代码片段)

...受到的数据通过曲线显示出来,其实这是用一个叫做QCustomPlot的控件,这个控件不是QT自带的,需要自己下载加入,今天介绍一下这个控件的使用方法,并附源码。QCustomPlot简介QCustomPlot是开源的Qt的第三方绘图... 查看详情

使用qt绘图控件qcustomplot绘制波形图(代码片段)

...受到的数据通过曲线显示出来,其实这是用一个叫做QCustomPlot的控件,这个控件不是QT自带的,需要自己下载加入,今天介绍一下这个控件的使用方法,并附源码。QCustomPlot简介QCustomPlot是开源的Qt的第三方绘图... 查看详情

如何有效地将大型数据框拆分为多个拼花文件?

】如何有效地将大型数据框拆分为多个拼花文件?【英文标题】:howtoefficientlysplitalargedataframeintomanyparquetfiles?【发布时间】:2018-11-2207:26:57【问题描述】:考虑以下数据框importpandasaspdimportnumpyasnpimportpyarrow.parquetaspqimportpyarrowaspaid... 查看详情

使用循环在构面中创建多个 geom_hline 对象时,如何有效地创建手动图例?

】使用循环在构面中创建多个geom_hline对象时,如何有效地创建手动图例?【英文标题】:HowcanIefficientlycreateamanuallegendwhenusingalooptocreatemultiplegeom_hlineobjectsinafacet?【发布时间】:2016-12-1022:50:06【问题描述】:我编写了以下示例来... 查看详情

如何有效地从大型数据框字典中提取同一列? (性能警告)

】如何有效地从大型数据框字典中提取同一列?(性能警告)【英文标题】:Howtoextractthesamecolumnfromalargedictionaryofdataframesefficiently?(PerformanceWarning)【发布时间】:2021-11-1616:10:47【问题描述】:下面给出了为本示例计算数据框字典... 查看详情

dcast 有效地使用多个变量的大型数据集

】dcast有效地使用多个变量的大型数据集【英文标题】:dcastefficientlylargedatasetswithmultiplevariables【发布时间】:2015-02-1806:52:13【问题描述】:我正在尝试dcast一个大型数据集(数百万行)。我有一排是到达时间和出发地,另一排是... 查看详情

如何使用 blit 有效地重绘多个 matplotlib 图

】如何使用blit有效地重绘多个matplotlib图【英文标题】:Howtoeffectivelyredrawmultiplematplotlibplotswithblit【发布时间】:2019-08-0106:48:13【问题描述】:我使用matplotlib和pyqt5将数据绘制到3个轴中,然后用户可以在一个图中进行选择,该图... 查看详情

如何有效地将大型 DataFrame 列作为值列表发送到函数

】如何有效地将大型DataFrame列作为值列表发送到函数【英文标题】:HowtosendlargeDataFramecolumnaslistofvaluestoaFunctionefficiently【发布时间】:2016-12-3109:37:06【问题描述】:我正在尝试在DataFrame列上查找统计数据(基尼系数),我需要将... 查看详情