C++ Qwt - 从矢量绘制数据

C++ Qwt - Plotting data from a vector

本文关键字:绘制 数据 Qwt C++      更新时间:2023-10-16

我正在尝试根据我获得并存储在向量中的数据绘制一个图形,但是,我似乎找不到任何教程或参考资料,也无法给我任何指示我需要做什么。所以这是我的代码:

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 );

http://qwt.sourceforge.net/class_qwt_plot_curve.html

http://qwt.sourceforge.net/class_qwt_plot.html

一种方法是在绘图上附加一条曲线,即:

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();
   //...
}

我建议你研究关于曲线的Qwt文档