对于性能评估,我正在使用 QCPScatterStyle::ssCircle
和 QCPScatterStyle::ssDot
绘制相同的数据,两者都禁用自适应采样 . 带有 ssCircle
的图表看起来不错,而且有点懒散,但是这是预期的,而 ssDot
的图表更快,这也是预期的,但图表看起来太薄(不预期)并且数据在调整大小时会改变外观(没想到) .
正确的图像是在最小宽度变化之后 . 顶部使用 ssDot
,底部使用 ssCircle
. 可以看出,前两个图之间存在明显差异 .
我做错了什么,这是一个错误,还是这甚至可能是预期的行为?
这是在Win10上使用QCustomPlot 2.0.1和MSVC 2017 .
#include <random>
#include <QtWidgets/QApplication>
#include <QtWidgets/QMainWindow>
#include <qcustomplot.h>
int
main( int argc, char *argv[] ) {
QApplication app( argc, argv );
QMainWindow wnd;
auto *customPlot = new QCustomPlot();
customPlot->addGraph();
std::normal_distribution<> d{5, 2};
std::random_device rd{};
std::mt19937 gen{rd()};
int const num = 100000;
QVector<double> x0, y0;
x0.resize( num );
y0.resize( num );
for( int n = 0; n < num; ++n ) {
x0[n] = d( gen );
y0[n] = d( gen );
};
customPlot->graph( 0 )->setScatterStyle(
QCPScatterStyle( QCPScatterStyle::ssCircle, 1 ) );
// QCPScatterStyle( QCPScatterStyle::ssDot, 1 ) );
customPlot->graph( 0 )->setLineStyle( QCPGraph::lsNone );
customPlot->graph( 0 )->setAdaptiveSampling( false );
customPlot->graph( 0 )->setData( x0, y0 );
customPlot->xAxis->setRange( -5, 15.0 );
customPlot->yAxis->setRange( -5, 15.0 );
wnd.setCentralWidget( customPlot );
wnd.resize( 400, 300 );
wnd.show();
return app.exec();
}
1 回答
我想我找到了问题的原因 . 对我来说,它看起来像一个bug . 我通过从
drawLine
切换到drawPoint
来改变它的工作方式