我正在使用QCharts (使用区域图示例作为模板)。
我正在绘制一个区域图,在每个系列中有10000点,我发现它非常慢,窗口显示和调整窗口大小会导致进程挂起,它在这个数据集中无法使用。有什么不对的地方吗?我已经看到,禁用反混叠可能有帮助,但它没有。
我有个折叠式代码
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QAreaSeries>
#include <QRandomGenerator>
#include <QDateTime>
#include <QtCharts/QHXYModelMapper>
#include <QTimer>
#include "boost/range/irange.hpp"
QT_CHARTS_USE_NAMESPACE
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
auto *upper = new QLineSeries;
auto *lower = new QLineSeries;
auto *generator = QRandomGenerator::global();
const auto maxSamples = 10000;
for(auto x : boost::irange(0, maxSamples))
{
lower->append(QPointF(x, 0));
upper->append(QPointF(x, generator->bounded(0, 100)));
}
auto *series = new QAreaSeries(upper, lower);
QChart *chart = new QChart();
chart->addSeries(series);
chart->createDefaultAxes();
chart->legend()->setVisible(false);
chart->axisY(series)->setRange(0, 100);
QChartView *chartView = new QChartView(chart);
//chartView->setRenderHint(QPainter::Antialiasing);
QMainWindow window;
window.setCentralWidget(chartView);
window.resize(800, 600);
window.show();
return a.exec();
}
有什么想法吗?这里有什么问题?
发布于 2022-01-20 15:25:12
我们在前几次跳到了这个阶段,发现QXYSeries中append()的实现不是最优的,并且花费了大量的时间处理大型数据集。
为了提高性能,我们现在使用:
void QXYSeries::replace(QVector<QPointF> points)
使用我们首先分配给数据集大小的本地向量,然后填充实际数据。
对于大型数据集,由于用于呈现系列的图形项的构造,可能仍然存在性能问题,这取决于系列的类型。
https://stackoverflow.com/questions/67091992
复制相似问题