第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):将当前窗口分割成个视图区域,并指定第个视图为当前视图。 - 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。如果在此命令之前并没有任何图形窗口被打开,那么系统将会自动创建一个图形窗口,并将其分割为个视图区域。
- 实例 ——- 随机矩阵图形
- 随机生成一个行向量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 综合实例 ——- 绘制函数曲线