第6章 二维绘图
- 二维曲线是将平面上的数据连接起来的平面图形,数据点可以用向量或矩阵来提供。MATLAB大量数据计算给二维曲线提供了应用平台,这也是MATLAB有别于其他科学计算的地方,它实现了数据结果的可视化,具有强大的图形功能。
- 本章将介绍MATLAB的图形窗口和二维图形的绘制。希望通过本章的学习,读者能够进行MATLAB二维绘图。
6.1 二维绘图
- 本节内容是学习用MATLAB 作图最重要的部分,也是学习后面内容的一个基础。在本节中我们将会详细介绍一些常用的绘图命令。
6.1.1 plot绘图命令
- plot命令是最基本的绘图命令,也是最常用的一个绘图命令。当执行plot命令时,系统会自动创建一个新的图形窗口。若之前已经有图形窗口打开,那么系统会将图形画在最近打开过的图形窗口上,原有图形也将被覆盖。本节将详细讲述该命令的各种用法。
- plot命令主要有下面几种使用格式。
- plot(x)
- 这个函数格式的功能如下。
- 当x是实向量时,则绘制出以该向量元素的下标(即向量的长度,可用MATLAB函数length()求得)为横坐标,以该向量元素的值为纵坐标的一条连续曲线。
- 当x是实矩阵时,按列绘制出每列袁术值相对其下标的曲线,曲线数等于x的列数。
- 当x是复数矩阵时,按列分别绘制出以元素实部为横坐标,以元素虚部为纵坐标的多条曲线。
- 实例 ——- 实验数据曲线
- 如果要在同一图形窗口中分割出所需要的几个窗口来,可以适用subplot命令,它的使用格式如下。
- subplot(m,n,p):将当前窗口分割成![](https://g.yuque.com/gr/latex?m%C3%97n#card=math&code=m%C3%97n&id=QXyAX)个视图区域,并指定第![](https://g.yuque.com/gr/latex?p#card=math&code=p&id=g4wlq)个视图为当前视图。
- subplot(‘position’,[left botton width height]):产生的新子区域的位置由用户指定,后面的四元组为区域的具体参数控制,宽高的取值范围都是[0,1]。
- 实例 ——- 窗口分割
- 本实例显示图形分割。
>> subplot(2,2,1)
>> subplot(2,2,2)
>> subplot(2,2,3)
>> subplot(2,2,4)
- 需要注意的是,这些子图的编号是按行来排列的,例如第s行第t个视图区域的编号为(s-1)×n+t。如果在此命令之前并没有任何图形窗口被打开,那么系统将会自动创建一个图形窗口,并将其分割为![](https://g.yuque.com/gr/latex?m%C3%97n#card=math&code=m%C3%97n&id=E1IOf)个视图区域。
- 实例 ——- 随机矩阵图形
- 随机生成一个行向量a以及一个实方阵b,用plot画图命令做出a、b的图像。
>> a=rand(1,10);
>> b=rand(5,5);
>> subplot(1,2,1),plot(a)
>> subplot(1,2,2),plot(b)
- plot(x,y)
- 这个函数格式的功能如下。
- 当x、y是同维向量时,绘制以x为横坐标、以y为纵坐标的曲线。
- 当x是向量,y是有一维与x等维的矩阵时,绘制出多根不同颜色的曲线,曲线数等于y阵的另一维数,x作为这些曲线的横坐标。
- 当x是矩阵,y是向量时,同上,但以y为横坐标。
- 当x、y是同维矩阵是,以x对应的列元素为横坐标,以y对应的列元素为纵坐标分别绘制曲线,曲线数等于矩阵的列数。
- 实例 ——- 摩擦系数变化曲线
时间 |
路程1/m |
路程2/m |
路程3/m |
路程4/m |
0 |
0 |
0 |
0 |
0 |
0.2 |
0.58 |
0.31 |
0.18 |
0.08 |
0.4 |
0.83 |
0.56 |
0.36 |
0.19 |
0.6 |
1.14 |
0.89 |
0.62 |
0.30 |
0.8 |
1.56 |
1.23 |
0.78 |
0.36 |
1.0 |
2.08 |
1.52 |
0.99 |
0.49 |
- plot(x1,y1,x2,y2,,)
- 这个函数格式的功能是绘制多条曲线。在这种用法中,必须是成对出现的,上面的命令等价于逐次执行#card=math&code=plot%28xi%2Cyi%29&id=uMUFn)命令,其中。
- 实例 ——- 正弦图形
- 在同一个圆上画出%E3%80%81y%3Dsin(x-%5Cfrac%7B%5Cpi%7D%7B4%7D)#card=math&code=y%3Dsinx%E3%80%81y%3Dsin%28x%2B%5Cfrac%7B%5Cpi%7D%7B4%7D%29%E3%80%81y%3Dsin%28x-%5Cfrac%7B%5Cpi%7D%7B4%7D%29&id=vU4MR)的图像。
>> x=linspace(0,2*pi,100);
>> y1=sin(x);
>> y2=sin(x+pi/4);
>> y3=sin(x-pi/4);
>> plot(x,y1,x,y2,x,y3)
实例 ——- 正弦余弦图形
- 在同一个圆上画出#card=math&code=y%3Dsinx%E3%80%81y%3D5cos%28x-%5Cfrac%7B%5Cpi%7D%7B4%7D%29&id=mILD1)的图像。
>> x1=linspace(0,2*pi,100);
>> x2=x1-pi/4;
>> y1=sin(x1);
>> y2=5*cos(x2);
>> plot(x1,y1,x2,y2)
注意:
上面的linspace命令用来将已知的区间[0,2]100等分。这个命令的具体使用格式为linspace(a,b,n),作用是将已知区间[a,b]作n等分,返回值为各节点的坐标。
- 其中x,y为向量或矩阵,s为单引号标记的字符串,用来设置所画数据点的类型、大小、颜色以及数据点之间连线的类型、粗细、颜色等。实际应用中,s是某些字母或符号的组合,这些字母和符号我们会在下一段介绍。s可以省略,此时将由MATLAB系统默认设置,即曲线一律采用“实线”线型,不同曲线将按表6-3所给出的8种颜色(蓝、绿、红、青、品红、黄、黑、白)顺序着色。
- s的合法设置参见表6-4和表6-5
字符 |
色彩 |
RGB值 |
b(blue) |
蓝色 |
001 |
g(green) |
绿色 |
010 |
r(red) |
红色 |
100 |
c(cyan) |
青色 |
011 |
m(magenta) |
品红 |
101 |
y(yellow) |
黄色 |
110 |
k(black) |
黑色 |
000 |
w(white) |
白色 |
111 |
线型符号 |
符号含义 |
线型符号 |
符号含义 |
- |
实线(默认值) |
: |
点线 |
— |
虚线 |
-. |
点画线 |
- 实例 ——- 数据点图形
- 任意描一些数据点,熟悉plot命令中参数的用法
>> x=0:pi/10:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> y3=x;
>> y4=x.^2;
>> hold on
>> plot(x,y1,'r*')
>> plot(x,y2,'kp')
>> plot(x,y3,'bd')
>> plot(x,y4,'g:')
>> hold off
字符 |
数据点 |
字符 |
数据点 |
+ |
加号 |
> |
向右三角形 |
o |
小圆圈 |
< |
向左三角形 |
* |
星号 |
s |
正方形 |
. |
实点 |
h |
正六角星 |
x |
交叉号 |
p |
正五角星 |
d |
棱形 |
v |
向下三角形 |
^ |
向上三角形 |
|
- 说明:
- 命令用来使当前轴及图形保持不变,准备接受此后所绘制的新的曲线。 使当前轴及图形不再保持上述性质。
- 实例 ——- 图形的重叠
- 本实例演示保持命令的应用
>> N=9;
>> t=0:2*pi/N:2*pi;
>> x=sin(t);y=cos(t);
>> tt=reshape(t,2,(N+1)/2);
>> tt=flipud(tt);
>> tt=tt(:);
>> xx=sin(tt);yy=cos(tt);
>> plot(x,y)
>> hold on
>> plot(xx,y)
>> hold off
>> plot(xx,y)
%0A#card=math&code=y1%3Dsint%2C%20%20y2%3Dsintsin%289t%29%0A&id=oywto)
>> t=(0:pi/100:pi)';
>> y1=sin(t)*[1,-1];
>> y2=sin(t).*sin(9*t);
>> t3=pi*(0:9)/9;
>> y3=sin(t3).*sin(9*t3);
>> plot(t,y1,'r:',t,y2,'-bo')
>> hold on
>> plot(t3,y3,'s',"MarkerSize",10,"MarkerEdgeColor",[0,1,0],"MarkerFaceColor",[1,0.8,0])
>> axis([0,pi,-1,1])
>> hold off
>> plot(t,y1,'r:',t,y2,'-bo',t3,y3,'s',"MarkerSize",10,"MarkerEdgeColor",[0,1,0],"MarkerFaceColor",[1,0.8,0])
- plot(x1,y1,s1,x2,y2,s2):
- 这种格式的用法与用法3相似,不同之处是此格式有参数的控制,运行此命令等价于依次执行#card=math&code=plot%28xi%2Cyi%2Csi%29&id=kOdpH),其中
- 实例 ——-
6.1.2 fplot绘图命令
6.1.3 ezplot绘图命令
6.2 不同坐标系下的绘图命令
6.2.1 极坐标下绘图
6.2.2 半对数坐标系下绘图
6.2.3 双对数坐标系下绘图
6.2.4 双y轴坐标
6.3 图形窗口
6.3.1 图形窗口的创建
6.3.2 工具条的使用
6.4 综合实例 ——- 绘制函数曲线