转载自:https://blog.csdn.net/jiaojialulu/article/details/69353196
可以查看官方的用法和解释;
PCLPlotter类
PCLPlotter类提供了一个十分直接简单的接口,通过它可以绘制各种图表,从多项式曲线图到直方图,从而不必要在使用MATLAB等软件来绘图了。我们下面就先从简单地画一个多项式曲线开始,逐步学习PCLPlotter类。。。。我又当搬运工了,这个代码没调试成功,自己直接用的MATLAB做好了图表。。但是可以给大家一点参考意见
画一个多项式曲线图
步骤
- 定义一个绘图器
// 定义一个绘图器
pcl::visualization::PCLPlotter * plotter = new pcl::visualization::PCLPlotter();
- 定义多项式
// 定义一个多项式 y = 2 + 3x + x^2. 由vector存储各项系数,从x的零次项系数开始……,所以vector应为{2,3,1}
vector<double> func1(3, 0);
func1[0] = 2;
func1[1] = 3;
func1[2] = 1;
- 载入多项式到绘图器中
// 将多项式载入到绘图器重,设定X轴范围,和曲线名称
plotter->addPlotData(func1, -10, 10, "y = 2 + 3x + x^2");
- 显示曲线
// 显示曲线
plotter->plot();
各种数据输入类型
之前在画多项式曲线图时,我们是输入一个存储多项式系数的vector来代表多项式,然后输入一个X的范围,最终做出了曲线图。除了这种输入方式,在官方文档中,我们可以看到多种数据输入方式,下面我们就举几个例子:
输入点的坐标
这是最基本的输入方式,如果你要画出一些点,并且知道他们的坐标,就可以采用这种输入方式,我们用一个vector代表一系列的(x,y)坐标:
vector<pair<double, double> > data;
populateData (data);
plotter->addPlotData (data,"cos");
从文件中读取数据
跟上一种输入方式类似,只不过是将变量和函数值存储在一个文本文件中,并且用空格隔开。第一列代表自变量,其余列表示函数值,并且文件中第一行表示各个变量名,变量名之间用空格隔开。例如,“test.txt”文本内有如下内容
x y=x^2-3 x-y
1 -2 3
2 1 1
3 6 -3
4 13 -9
5 22 -17
6 33 -27
7 46 -39
8 61 -53
9 78 -69
10 97 -87
11 118 -107
12 141 -129
13 166 -153
14 193 -179
15 222 -207
16 253 -237
17 286 -269
18 321 -303
19 358 -339
20 397 -377
- 代码:
// 读取文件
plotter->addPlotData(argv[1], vtkChart::POINTS);
plotter->spinOnce(30000);
多项式和有理数方程
vector<double> func1 (1,0);
func1[0] = 1;
vector<double> func2 (2,0);
func1[1] = 1;
plotter->addPlotData (std::make_pair (func1, func2),-10, 10, "y = 1/x");
指定自定义函数
用户可以自定义函数,函数必须是double映射到double的,最后在addPlotData的时候带入一个函数指针就ok了。
double
identity (double val)
{
return val;
}
...
...
plotter->addPlotData (identity,-10, 10,"identity");
添加其他属性
可以添加其他属性,比如标题,图注,背景色等等。
plotter->setTitle ("My plot"); //global title
plotter->setXTitle ("degrees");
plotter->setYTitle ("cos");
plotter->setShowLegend (true); //show legends
...
plotter->plot ();
转载自原文链接, 如需删除请联系管理员。
原文链接:pcl小知识(五)——Visualization教程中PCLPlotter类,转载请注明来源!