第6章 二维绘图

  • 二维曲线是将平面上的数据连接起来的平面图形,数据点可以用向量或矩阵来提供。MATLAB大量数据计算给二维曲线提供了应用平台,这也是MATLAB有别于其他科学计算的地方,它实现了数据结果的可视化,具有强大的图形功能。
  • 本章将介绍MATLAB的图形窗口和二维图形的绘制。希望通过本章的学习,读者能够进行MATLAB二维绘图。

6.1 二维绘图

  • 本节内容是学习用MATLAB 作图最重要的部分,也是学习后面内容的一个基础。在本节中我们将会详细介绍一些常用的绘图命令。

6.1.1 plot绘图命令

  • plot命令是最基本的绘图命令,也是最常用的一个绘图命令。当执行plot命令时,系统会自动创建一个新的图形窗口。若之前已经有图形窗口打开,那么系统会将图形画在最近打开过的图形窗口上,原有图形也将被覆盖。本节将详细讲述该命令的各种用法。
  • plot命令主要有下面几种使用格式。
  • plot(x)
    • 这个函数格式的功能如下。
      • 当x是实向量时,则绘制出以该向量元素的下标(即向量的长度,可用MATLAB函数length()求得)为横坐标,以该向量元素的值为纵坐标的一条连续曲线。
      • 当x是实矩阵时,按列绘制出每列袁术值相对其下标的曲线,曲线数等于x的列数。
      • 当x是复数矩阵时,按列分别绘制出以元素实部为横坐标,以元素虚部为纵坐标的多条曲线。
    • 实例 ——- 实验数据曲线
      • 从实验中得到y与x的一组数据,见下表
        1. >> x=[5 10 20 30 40 50 60 70 90 120];
        2. >> y=[6 10 13 16 17 19 23 25 29 460];
        3. >> plot(x,y)
  1. - 如果要在同一图形窗口中分割出所需要的几个窗口来,可以适用subplot命令,它的使用格式如下。
  2. - 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)个视图为当前视图。
  3. - subplot(‘position’,[left botton width height]):产生的新子区域的位置由用户指定,后面的四元组为区域的具体参数控制,宽高的取值范围都是[0,1]。
  • 实例 ——- 窗口分割
    • 本实例显示第6章  二维绘图 - 图1图形分割。
      1. >> subplot(2,2,1)
      2. >> subplot(2,2,2)
      3. >> subplot(2,2,3)
      4. >> subplot(2,2,4)
  1. - 需要注意的是,这些子图的编号是按行来排列的,例如第s行第t个视图区域的编号为(s-1n+t。如果在此命令之前并没有任何图形窗口被打开,那么系统将会自动创建一个图形窗口,并将其分割为![](https://g.yuque.com/gr/latex?m%C3%97n#card=math&code=m%C3%97n&id=E1IOf)个视图区域。
  • 实例 ——- 随机矩阵图形
    • 随机生成一个行向量a以及一个实方阵b,用plot画图命令做出a、b的图像。
      1. >> a=rand(1,10);
      2. >> b=rand(5,5);
      3. >> subplot(1,2,1),plot(a)
      4. >> 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对应的列元素为纵坐标分别绘制曲线,曲线数等于矩阵的列数。
    • 实例 ——- 摩擦系数变化曲线
      • 在某次物理实验中,测得摩擦系数不同情况下路程与时间的数据见表6-2。在同一图中作出不同摩擦系数情况下路程随时间的变化曲线。
      • 此问题可以将时间t写为一个列向量,相应测得的路程s的数据写为一个6×4的矩阵,然后利用plot命令即可。
        1. >> x=0:0.2:1;
        2. >> y=[0 0 0 0 ;0.58 0.31 0.18 0.08; 0.83 0.56 0.36 0.19 ;1.14 0.89 0.62 0.30; 1.56 1.23 0.78 0.36 ;2.08 1.52 0.99 0.49];
        3. >> plot(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,第6章  二维绘图 - 图2,)
    • 这个函数格式的功能是绘制多条曲线。在这种用法中,第6章  二维绘图 - 图3必须是成对出现的,上面的命令等价于逐次执行第6章  二维绘图 - 图4#card=math&code=plot%28xi%2Cyi%29&id=uMUFn)命令,其中第6章  二维绘图 - 图5
    • 实例 ——- 正弦图形
      • 在同一个圆上画出第6章  二维绘图 - 图6%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)的图像。
        1. >> x=linspace(0,2*pi,100);
        2. >> y1=sin(x);
        3. >> y2=sin(x+pi/4);
        4. >> y3=sin(x-pi/4);
        5. >> plot(x,y1,x,y2,x,y3)
  • 实例 ——- 正弦余弦图形

    • 在同一个圆上画出第6章  二维绘图 - 图7#card=math&code=y%3Dsinx%E3%80%81y%3D5cos%28x-%5Cfrac%7B%5Cpi%7D%7B4%7D%29&id=mILD1)的图像。
      1. >> x1=linspace(0,2*pi,100);
      2. >> x2=x1-pi/4;
      3. >> y1=sin(x1);
      4. >> y2=5*cos(x2);
      5. >> plot(x1,y1,x2,y2)
  • 第6章  二维绘图 - 图8注意:
    上面的linspace命令用来将已知的区间[0,2第6章  二维绘图 - 图9]100等分。这个命令的具体使用格式为linspace(a,b,n),作用是将已知区间[a,b]作n等分,返回值为各节点的坐标。

    • plot(x,y,s)
  • 其中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命令中参数的用法
      1. >> x=0:pi/10:2*pi;
      2. >> y1=sin(x);
      3. >> y2=cos(x);
      4. >> y3=x;
      5. >> y4=x.^2;
      6. >> hold on
      7. >> plot(x,y1,'r*')
      8. >> plot(x,y2,'kp')
      9. >> plot(x,y3,'bd')
      10. >> plot(x,y4,'g:')
      11. >> hold off
字符 数据点 字符 数据点
+ 加号 > 向右三角形
o 小圆圈 < 向左三角形
* 星号 s 正方形
. 实点 h 正六角星
x 交叉号 p 正五角星
d 棱形 v 向下三角形
^ 向上三角形
  • 第6章  二维绘图 - 图10说明:
    • 第6章  二维绘图 - 图11 命令用来使当前轴及图形保持不变,准备接受此后第6章  二维绘图 - 图12所绘制的新的曲线。第6章  二维绘图 - 图13 使当前轴及图形不再保持上述性质。
  • 实例 ——- 图形的重叠
    • 本实例演示保持命令的应用
      1. >> N=9;
      2. >> t=0:2*pi/N:2*pi;
      3. >> x=sin(t);y=cos(t);
      4. >> tt=reshape(t,2,(N+1)/2);
      5. >> tt=flipud(tt);
      6. >> tt=tt(:);
      7. >> xx=sin(tt);yy=cos(tt);
      8. >> plot(x,y)
      9. >> hold on
      10. >> plot(xx,y)
      11. >> hold off
      12. >> plot(xx,y)
  • 实例 ——- 曲线属性的设置
    • 设置曲线的显示属性

第6章  二维绘图 - 图14%0A#card=math&code=y1%3Dsint%2C%20%20y2%3Dsintsin%289t%29%0A&id=oywto)

  1. >> t=(0:pi/100:pi)';
  2. >> y1=sin(t)*[1,-1];
  3. >> y2=sin(t).*sin(9*t);
  4. >> t3=pi*(0:9)/9;
  5. >> y3=sin(t3).*sin(9*t3);
  6. >> plot(t,y1,'r:',t,y2,'-bo')
  7. >> hold on
  8. >> plot(t3,y3,'s',"MarkerSize",10,"MarkerEdgeColor",[0,1,0],"MarkerFaceColor",[1,0.8,0])
  9. >> axis([0,pi,-1,1])
  10. >> hold off
  11. >> 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相似,不同之处是此格式有参数的控制,运行此命令等价于依次执行第6章  二维绘图 - 图15#card=math&code=plot%28xi%2Cyi%2Csi%29&id=kOdpH),其中第6章  二维绘图 - 图16
    • 实例 ——-

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 综合实例 ——- 绘制函数曲线