C++ Qwt - 从向量中绘制数据
Posted
技术标签:
【中文标题】C++ Qwt - 从向量中绘制数据【英文标题】:C++ Qwt - Plotting data from a vector 【发布时间】:2013-09-05 15:45:29 【问题描述】:我正在尝试根据我获得并存储在向量中的数据绘制图表,但是,我似乎找不到任何教程或参考资料,并给我任何关于我需要做什么的指示。所以这是我的代码:
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();
谁能告诉我我可以使用什么函数来绘制数据?
谢谢
【问题讨论】:
我现在也面临这个问题。只是想问一下,我注意到您的问题只有一个数据向量,而给出的答案由 2 个数据向量组成。另一个向量应该是什么?希望你能帮忙。谢谢(: 【参考方案1】:查看 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
【讨论】:
感谢您的回复。你从哪里得到&plot
?因为,如果我在我的 o/p 中使用&d_plot
,它会给我一个错误:error: cannot initialize a parameter of type 'QwtPlot *' with an rvalue of type 'Plotter **' my_curve.attach(&d_plot);
有什么想法吗?感谢您的帮助:)
感谢您的回复。我这样做了,现在全部编译了。但是,当我运行应用程序时,没有任何显示?我需要设置笔颜色吗?谢谢:)
顺便说一句:***.com/questions/5374287/qwt-graph-plot-example 您可以随时查看这些示例作为参考【参考方案2】:
一种方法是将曲线附加到您的绘图上,即:
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 doc about curve
【讨论】:
以上是关于C++ Qwt - 从向量中绘制数据的主要内容,如果未能解决你的问题,请参考以下文章