[英]C++ Qwt - Plotting data from a vector
我试图根据我已经获得并存储在矢量中的数据来绘制图形,但是,我似乎无法找到任何教程或参考文献,并给我任何指示我需要做什么。 所以这是我的代码:
class Plotter : public QwtPlot
{
public:
Plotter() {
}
};
int main( int argc, char **argv )
{
QApplication app(argc, argv);
//Plotter *d_plot = new Plotter();
Plotter* d_plot = new Plotter();
d_plot->setTitle("DEMO");
d_plot->setCanvasBackground(Qt::white);
d_plot->setAxisScale( QwtPlot::yLeft, 0.1, 50.0 );
d_plot->setAxisScale(QwtPlot::yRight, 0.1, 50.00);
// PLOT THE DATA
std::vector<double> data;
data.push_back(1.03);
data.push_back(13.12);
//....
d_plot->resize( 600, 400 );
d_plot->show();
return app.exec();
}
任何人都可以给我任何想法,我可以使用什么功能来允许我绘制数据?
谢谢
检查QwtPlot文档:通常你创建一个QwtPlotCurve
,使用QwtPlotCurve::setSamples
获取其中的数据然后QwtPlotCurve::attach
来获取数据。
应该是这样的:
std::vector<double> x;
std::vector<double> y;
//fill x and y vectors
//make sure they're the same size etc
QwtPlotCurve curve( "Foo" );
//or use &x[ 0 ] or &(*x.first()) pre-C++11
cure.setSamples( x.data(), y.data(), (int) x.size() );
curve.attach( &plot );
一种方法是将曲线附加到您的图上,即:
QwtPlotCurve myCurve;
myCurve->attach(&d_plot);
然后你可以使用(在一个成员函数中,或者你需要的任何地方)函数QwtPlotCurve::setRawSample
,它具有以下几乎解释性的签名:
void QwtPlotCurve::setRawSample(const double* xData, const double* yData, int size);
使用它设置数据,然后调用replot()
刷新绘图。 这意味着你必须还有一个x值的向量。
代码如下所示:
int main( int argc, char **argv )
{
//...
Plotter* d_plot = new Plotter();
//Plot config
// PLOT THE DATA
std::vector<double> data_y;
data_y.push_back(1.03);
data_y.push_back(13.12);
std::vector<double> data_x;
data_x.push_back(1.0);
data_x.push_back(2.0);
//....
myCurve->setRawSample(data_x.data(),data_y.data(),data_y.size());
d_plot->resize( 600, 400 );
d_plot->replot();
d_plot->show();
//...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.