MATLAB教程四:MATLAB绘图

4.1 二维曲线

plot函数:

plot函数的基本用法:

  • plot(x,y):绘制二维曲线的函数。其中,x 和 y 分别用于存储 x 坐标和 y 坐标数据。通常,x 和 y 为长度相同的向量。
>> x=[2.5, 3.5, 4, 5];
>> y=[1.5, 2.0, 1, 1.5];
>> plot(x, y)

在这里插入图片描述

1、当 x 是向量,y 是矩阵时:

       如果矩阵 y 的列数等于 x 的长度,则以向量 x 为横坐标,以 y 的每个行向量为纵坐标绘制曲线,曲线的条数等于 y 的行数。

       如果矩阵 y 的行数等于 x 的长度,则以向量 x 为横坐标,以 y 的每个列向量为纵坐标绘制曲线,曲线的条数等于 y 的列数。

>> x=linspace(0,2*pi,100);
>> y=[sin(x); sin(2*x); sin(0.5*x)];
>> plot(x,y)

在这里插入图片描述

2、当x、y是同型矩阵时:

        以 x、y 对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。

>> t=0:0.01:2*pi;
>> t1=t';
>> x=[t1, t1, t1];
>> y=[sin(t1), sin(2*t1), sin(0.5*t1)];
>> plot(x,y)

在这里插入图片描述

含多个输入参数的plot函数

  • plot(x1, y1, x2, y2, …, xn, yn):每一向量对构成一组数据点的横、纵坐标,绘制一条曲线。

例:采用不同个数的数据点绘制正弦函数曲线,观察曲线形态。

>> t1=linspace(0, 2*pi, 10);
>> t2=linspace(0, 2*pi, 20);
>> t3=linspace(0, 2*pi, 100);
>> plot(t1,sin(t1),t2,sin(t2)+1,t3,sin(t3)+2)

在这里插入图片描述

含选项的plot函数

  • plot(x,y,z,选项):选项用于指定曲线的线型、颜色和数据点标记。
线型颜色数据点标记
‘’ _ ‘’:实线‘’ r ‘’:红色“ * ”:星号
“ : ”:虚线“ g ”:绿色“ o ”:圆圈
“ _. ”:点划线“ b ”:蓝色“ s ”:方块
“__”:双划线“ w ”:白色” p “:五角星
“ k ”:黑色” ^ “:朝上三角符号

例:用不同线型和颜色在同一坐标内绘制曲线 y=2e-0.5xsin(2πx) 及其包络线。

>> x=(0:pi/50:2*pi)';
>> y1=2*exp(-0.5*x)*[1,-1];
>> y2=2*exp(-0.5*x).*sin(2*pi*x);
>> x1=0:0.5:6;
>> y3=2*exp(-0.5*x1).*sin(2*pi*x1);
>> plot(x,y1,'k:', x,y2,'b--', x1,y3,'rp')

在这里插入图片描述

fplot函数:

fplot函数的基本用法

  • fplot(f,lims,选项):绘制二维曲线的函数。其中,f 代表一个函数,通常采用函数句柄的形式。lims 为 x 轴的取值范围,用二元向量 [xmin,xmax] 描述,默认值为 [-5, 5]。选项定义与 plot 函数相同。

例:采用 fplot 函数绘制函数sin 1/x。

>> f=@(x) sin(1./x)
f =
  包含以下值的 function_handle:
    @(x)sin(1./x)
>> fplot(f,[0,0.2],'b')

在这里插入图片描述

双输入函数参数的用法

  • fplot(funx,funy,tlims,选项):其中,funx 、funy 代表函数,通常采用函数句柄的形式。tlims 为参数函数 funx 和 funy 的自变量的取值范围,用二元向量[tmin,tmax]描述 。

例:已知螺旋线的参数方程 { x = t s i n ( t ) y = t c o s ( t ) \begin{cases}x=tsin(t)\\y=tcos(t)\end{cases} {x=tsin(t)y=tcos(t)绘制曲线。

>> x=@(t) t.*sin(t)
x =
  包含以下值的 function_handle:
    @(t)t.*sin(t)
>> y=@(t) t.*cos(t)
y =
  包含以下值的 function_handle:
    @(t)t.*cos(t)
>> fplot(x,y,[0,10*pi],'r')

在这里插入图片描述

4.2 绘制图形的辅助操作

图形标注:

title函数基本用法

  • title(‘图形标题’):用于给图形添加标题。

注意:在图形标题中可以使用 LaTeX 格式控制符。

例:绘制 [-2π,2π] 区间的正弦曲线并给图形添加标题。

>> x=-2*pi:0.05:2*pi;
>> y=sin(x);
>> plot(x,y)    % 如果只有一行标题可以这样写>> title('y=sin(x)')
>> title({'MATLAB', 'y=sin(x)'})  

在这里插入图片描述

  • title(’图形标题‘,’属性名‘,’属性值‘)

Color属性 :用于设置图形标题文本的颜色。

FontSize属性 :用于设置标题文字的字号。

>> x=-2*pi:0.05:2*pi;
>> y=sin(x);
>> plot(x,y)
>> title('y=sin(x)','Color','r','FontSize',24)

在这里插入图片描述

xlabel 函数和 ylabel 函数的基本用法:

  • xlabel(x轴说明):在 x 轴添加标签。
  • ylabel(y轴说明):在 y 轴添加标签。

例:绘制 [-2π,2π] 区间的正弦曲线并给 x 轴和 y 轴添加标签。

>> x=-2*pi:0.05:2*pi;
>> y=sin(x);
plot(x,y)
>> xlabel('-2\pi \leq x \leq 2\pi')
>> ylabel('-1\leq y \leq 1')

在这里插入图片描述

text 函数和 gtext 函数的基本用法:

  • text(x, y, 说明) :在图中坐标(x,y)处添加说明。
  • gtext(说明):在图中鼠标点击处添加说明。

例:绘制 [-2π,2π] 区间的正弦曲线并在图形中添加文字说明。

>> x=-2*pi:0.05:2*pi;
>> y=sin(x);
>> plot(x,y)
>> text(-2*pi, 0, '-2{\pi}')
>> text(3, 0.28, '\leftarrow sin(x)')     % 使用了LaTeX格式控制符

在这里插入图片描述

legend 函数的基本用法:

  • legend(图例1, 图例2, …):在图中添加曲线的图例。

例:绘制不同频率的正弦曲线并用图例标注曲线。

>> x = linspace(0, 2*pi, 100);
>> plot(x, [sin(x); sin(2*x); sin(3*x)])
>> legend('sin(x)', 'sin(2x)', 'sin(3x)')

在这里插入图片描述

坐标控制:

axis函数的基本用法:

  • axis([xmin,xmax,ymin,ymax,zmin,zmax]):控制图形的坐标轴显示的刻度范围。

axis函数的拓展用法:

  • axis equal:纵、横坐标轴采用等长刻度
  • axis square:产生正方形坐标系(默认为矩形)
  • axis auto:使用默认设置
  • axis off:取消坐标轴
  • axis on:显示坐标轴
>> x = [0, 1, 1, 0, 0];
>> y = [0, 0, 1, 1, 0];
>> plot(x,y)
>> axis([-0.1, 1.1, -0.1, 1.1])
>> axis equal;

在这里插入图片描述

grid 函数和 box 函数的基本用法:

  • grid on:给坐标系加网格。
  • grid off:去除坐标系的网格。
  • box on:给坐标系加边框。
  • box off:去除坐标系的边框。
>> x=-2*pi:0.05:2*pi;
>> y=sin(x);
>> plot(x,y)
>> box off     % 图形窗口默认有边框
>> grid on     % 图形窗口默认无网格

在这里插入图片描述

图形保持:

hold函数的基本用法:

  • hold on:保持当前图像不被刷新,允许多图共存。
  • hold off:使当前图像具备被刷新的性质,即关闭图形保持功能。

例:用图形保持功能绘制两个同心圆。

>> t = linspace(0,2*pi,100);
>> x = sin(t); y = cos(t);
>> plot(x, y, 'b')         % 绘制第一个图
>> hold on;                % 保持第一个图不被刷新
>> plot(2*x, 2*y, 'r--')   % 再绘制第二个图
>> grid on                 % 添加网格
>> axis([-2.2 2.2 -2.2 2.2])   
>> axis equal              % 是坐标系x,y轴刻度相等

在这里插入图片描述

图形窗口的分割:

subplot函数的基本用法:

  • subplot(m, n, p) 其中,m 和 n 指定将图形窗口分成 m×n 个绘图区,p 指定当前活动区。
>> x=linspace(0,2*pi,60);
>> subplot(2,2,1)         % 指定两行两列绘图区的第一个图形为活动区
>> plot(x,sin(x)-1);
>> title('sin(x)-1');
>> axis ([0,2*pi,-2,0])  
>> subplot(2,1,2)         % 指定两行一列绘图区的第二个图形为活动区
>> plot(x,cos(x)+1);
>> title('cos(x)+1');
>> axis ([0,2*pi,0,2])
>> subplot(4,4,3) 
>> plot(x,tan(x));
>> title('tan(x)');
>> axis ([0,2*pi,-40,40])
>> subplot(4,4,8) 
>> plot(x,cot(x));
>> title('cot(x)');
>> axis ([0,2*pi,-35,35])

在这里插入图片描述

4.3 特殊二维曲线

其他坐标系下的二位曲线图:

对数坐标图:

  • semilogx(x1, y1, 选项1, x2, y2, 选项2, …): 函数 x 轴为常用对数刻度,y 轴为线性刻度。
  • semilogy(x1, y1, 选项1, x2, y2, 选项2, …) :函数 x 轴为线性刻度,y 轴为常用对数刻度。
  • loglog(x1, y1, 选项1, x2, y2, 选项2, …):函数 x 轴和 y 轴均采用常用对数刻度。

例:绘制1/x 的直角线性坐标图和三种对数坐标图。

>> x=0:0.1:10;
>> y=1./x;
>> subplot(2,2,1)
>> plot(x,y) 
>> title('plot(x,y)');
>> grid on
>> subplot(2,2,2)
>> semilogx(x,y) 
>> title('semilogx(x,y)');
>> grid on
>> subplot(2,2,3)
>> semilogy(x,y) 
>> title('semilogy(x,y)');
>> grid on
>> subplot(2,2,4)
>> loglog(x,y) 
>> title('loglog(x,y)');
>> grid on

在这里插入图片描述

极坐标图:

  • polar(theta, rho, 选项):theta 为极角,rho 为极径,选项的内容与 plot 函数相同。

例:按极坐标方程 𝜌 = 1 − 𝑠𝑖𝑛𝜃 绘制心形曲线。

>> t = 0:pi/100:2*pi;
>> r = 1-sin(t);
>> subplot(1,2,1)
>> polar(t,r)
>> subplot(1,2,2)
>> t1 = t-pi/2;
>> r1 = 1-sin(t1);
>> polar(t,r1)

在这里插入图片描述

统计图:

条形图:

  • bar:绘制垂直条形图的函数。
  • barh:绘制水平条形图的函数。

例:下表是某公司2015~2017年家电类商品1月份的销售数据,绘制条形图。

冰箱空调洗衣机电视机抽烟机
2015688011598102
2016758810299110
20178186125105115
>> x=[2015,2016,2017];
>> y=[68,80,115,98,102;75,88,102,99,110;81,86,125,105,115];
>> subplot(2,1,1)
>> bar(x, y)
>> title('垂直条形图');
>> subplot(2,1,2)
>> barh(x, y)
>> title('水平条形图');

在这里插入图片描述

直方图:

  • hist(y, x):y 是要统计的数据,x 用于指定区间的划分方式。若 x 是标量,则统计区间均分成 x 个小区间;若 x 是向量,则向量 x 中的每一个 数指定分组中心值,元素的个数为数据分组数。x 缺省时,默认按10 个等分区间进行统计。
  • rose(theta):参数 theta 用于确定每一区间与原点的角度。

例:绘制服从高斯分布的直方图和再极坐标下的直方图。

>> y=randn(500,1);
>> subplot(2,1,1); 
>> x=-3:0.2:3;
>> hist(y,x); 
>> title('指定区间中心点的直方图')
>> subplot(2,1,2);
>> theta=y*pi;
>> rose(theta)
>> title('在极坐标下的直方图')

在这里插入图片描述

扇形图:

  • pie(x, explode):绘制扇形图的函数。其中,参数 x 存储待统计数据,选项 explode 控制图块的显示模式。

例:某次考试优秀、良好、中等、及格、不及格的人数分别为: 5、17、23、9、4,试用扇形统计图作成绩统计分析。

>> score = [5, 17, 23, 9, 4];
>> explode = [0,0,0,0,1];   % 哪个位置为1,对应的在score数组中哪个数据就突出显示
>> pie(score, explode)    
   %'location'指定图例位置,'eastoutside'表示图例放在绘图区域右边的外侧。
>> legend('优秀', '良好', '中等','及格','不及格', 'location', 'eastoutside')

在这里插入图片描述

散点图:

  • scatter(x, y, 选项, ‘filled’):x、y 用于定位数据点,选项用于指定线型、颜色、数据点标记。如果数据点标记是封闭图形,可以用选项 ‘filled ’指定填充数据点标记。该选项省略时,数据点是空心的。

例:以散点图形式绘制桃心曲线,曲线的参数方程如下:
{ x = 16 s i n 3 t y = 13 c o s t − 5 c o s ( 2 t ) − 2 c o s ( 3 t ) − c o s ( 4 t ) \begin{cases} x=16sin^3t \\ y=13cost-5cos(2t)-2cos(3t)-cos(4t) \end{cases} {x=16sin3ty=13cost5cos(2t)2cos(3t)cos(4t)

>> t = 0:pi/50:2*pi;
>> x = 16*sin(t).^3;
>> y = 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);
>> scatter(x,y,'rd','filled')

在这里插入图片描述

4.4 三维曲线

plot3函数:

plot3函数的基本用法:

  • plot3(x, y, z,选项) :绘制三维曲面的函数。其中,参数 x、y、z 组成一组曲线的坐标选项用于指定曲线的线型、颜色和数据点标记。

例:绘制空间曲线 { x = c o s t y = s i n t 0 < = t < = 6 π z = 2 t \begin{cases}x=cost\\y=sint\quad0<=t<=6\pi\\z=2t\end{cases} x=costy=sint0<=t<=6πz=2t

>> t=0:pi/50:6*pi;
>> x=cos(t);
>> y=sin(t);
>> z=2*t;
>> plot3(x,y,z,'p')
>> xlabel('X'),ylabel('Y'),zlabel('Z');
>> grid on

在这里插入图片描述

fplot3函数:

fplot3函数的基本用法:

  • fplot3(funx, funy, funz, tlims):其中,funx、funy、funz 代表定义曲线 x、y、z 坐标的函数,通常采用函数句柄的形式。tlims 为参数函数自变量的取值范围,用二元向量 [tmin, tmax] 描述,默认为 [-5, 5]。

例:绘制墨西哥帽顶曲线,曲线的参数方程如下:
{ x = e − t / 10 s i n ( 5 t ) y = e − t / 10 c o s ( 5 t ) t ∈ [ − 12 , 12 ] z = t \begin{cases} x=e^{-t/10}sin(5t)\\ y=e^{-t/10}cos(5t)\quad t\in[-12,12]\\ z=t \end{cases} x=et/10sin(5t)y=et/10cos(5t)t[12,12]z=t

>> xt = @(t) exp(-t/10).*sin(5*t);
>> yt = @(t) exp(-t/10).*cos(5*t);
>> zt = @(t) t;
>> fplot3(xt, yt, zt, [-12, 12], 'r-.')

在这里插入图片描述

4.5 三维曲面

平面网格数据的生成:

利用函数生成:

  • [X,Y]=meshgrid(x,y):其中,参数 x、y 为向量,存储网格点坐标的 X、Y 为矩阵。

例:绘制空间曲线

>> x = 2:6; 
>> y = (3:8)';
>> [X, Y] = meshgrid(x, y);
>> Z = randn(size(X));
>> plot3(X,Y,Z)
>> grid on;

在这里插入图片描述

绘制三维曲面的函数:

mesh函数和surf函数的基本用法:

  • mesh(x, y, z, c)
  • surf(x, y, z, c):其中,x、y 是网格坐标矩阵,z 是网格点上的高度矩阵,c 用于指定在不同高度下的曲面颜色。c 省略时,颜色的设定正比于图形的高度。

例:绘制三维曲面图 。 𝑧 = 𝑥 𝑒 − 𝑥 2 − 𝑦 2 𝑧 = 𝑥𝑒^{−𝑥^2−𝑦^2} z=xex2y2

>> t = -2:0.2:2; 
>> [X, Y] = meshgrid(t);
>> Z = X .* exp(-X.^2 - Y.^2);
>> subplot(1,3,1)
>> mesh(X,Y,Z); 
>> subplot(1,3,2)
>> surf(X,Y,Z); 
>> subplot(1,3,3)
>> plot3(X,Y,Z); 
>> grid on 

在这里插入图片描述

mesh函数和surf函数的拓展用法:

  • meshc:带等高线的三维网格曲面函数
  • meshz:带底座的三维网格曲面函数
  • surfc:具有等高线的曲面函数
  • surfl:具有光照效果的曲面函数

例:用4种方式绘制函数 𝒛 = (𝑥 − 1)2+(𝑦 − 2)2−1 的曲面图。 其中,x∈[0,2],y∈[1,3]。

>> [x,y]=meshgrid(0:0.1:2,1:0.1:3);
>> z=(x-1).^2+(y-2).^2-1;
>> subplot(2,2,1);
>> meshc(x,y,z);
>> title('meshc(x,y,z)')
>> subplot(2,2,2);
>> meshz(x,y,z);
>> title('meshz(x,y,z)')
>> subplot(2,2,3);
>> surfc(x,y,z);
>> title('surfc(x,y,z)')
>> subplot(2,2,4);
>> surfl(x,y,z); 
>> title('surfl(x,y,z)')

在这里插入图片描述

fmesh函数和fsurf函数的基本用法:

  • fsurf(funx, funy, funz, uvlims)
  • fmesh(funx, funy, funz, uvlims):其中,funx、funy、funz 代表定义曲面 x、y、z 坐标的函数,通常采用函数句柄的形式。uvlims 为 funx、funy 和 funz 的自变量的取值范围, 用4元向量 [umin, umax, vmin, vmax] 描述 ,默认为 [-5, 5, -5, 5]。

例:绘制螺旋曲面。
{ x = u s i n v y = − u c o s v − 5 < u < 5 , − 5 < v < 2 z = v \begin{cases} x=usinv\\ y=-ucosv\quad-5<u<5,-5<v<2\\ z=v \end{cases} x=usinvy=ucosv5<u<5,5<v<2z=v

>> funx = @(u,v) u.*sin(v);
>> funy = @(u,v) -u.*cos(v);
>> funz = @(u,v) v;
>> fsurf(funx,funy,funz,[-5 5 -5 -2])
>> hold on
>> fmesh(funx,funy,funz,[-5 5 -2 2])
>> hold off

在这里插入图片描述

标准三维曲面函数:

基本用法:

  • [x,y,z]=sphere(n):产生3个 (n+1) 阶的方阵,采用这3个矩阵可以绘制出圆心位于原点、半径为1的单位球体。

例:用 sphere 函数绘制一个球。

>> [x,y,z]=sphere(100);
>> surf(x,y,z)
>> axis equal

在这里插入图片描述

  • [x,y,z]=cylinder(R, n):其中,参数 R 是一个向量,存放柱面各个等间隔高度上的半径, n 表示在圆柱圆周上有 n 个间隔点,默认有20个间隔点。

例:用 cylinder 函数分别绘制柱面、花瓶和圆锥面。

>> subplot(1,3,1);
>> [x,y,z]=cylinder;
>> surf(x,y,z);
>> subplot(1,3,2);
>> t=linspace(0,2*pi,40);
>> [x,y,z]= cylinder(2+cos(t),30);
>> surf(x,y,z);
>> subplot(1,3,3);
>> [x,y,z]= cylinder(0:0.2:2,30);
>> surf(x,y,z);

在这里插入图片描述

  • peaks:该函数是一个典型的多元函数。他本质上是一个二元高斯分布的概率密度函数。

例:利用 peaks 函数绘制图形。

>> surf(peaks)

在这里插入图片描述

4.6 图形修饰处理

视点处理:

  • view(az,el):az 为方位角,el 为仰角。系统默认的视点定义为方位角 -37.5°,仰角30°。

例:绘制函数 𝒛 = (𝑥 − 1)2+(𝑦 − 2)2−1 曲面,并从不同视点展示曲面。

>> [x,y]=meshgrid(0:0.1:2, 1:0.1:3);
>> z=(x-1).^2+(y-2).^2-1;
>> subplot(2,2,1); 
>> mesh(x,y,z)
>> title('方位角=-37.5{\circ},仰角=30{\circ}')
>> subplot(2,2,2); 
>> mesh(x,y,z)
>> view(0,90);
>> title('方位角=0{\circ},仰角=90{\circ}')
>> subplot(2,2,3); 
>> mesh(x,y,z)
>> view(90,0); 
>> title('方位角=90{\circ},仰角=0{\circ}')
>> subplot(2,2,4); 
>> mesh(x,y,z)
>> view(-45,-60); 
>> title('方位角=-45{\circ},仰角=-60{\circ}')

在这里插入图片描述

色彩处理:

颜色的向量表示:向量元素在 [0,1] 范围内取值,3个元素依次表示红、绿、蓝3种颜色的相对亮度,称为 RGB 三元组。

         [R(红),G(绿),B(蓝)]:

[0 0 1]:蓝色             [1 0 0]:红色

[0 1 0]:绿色             [1 1 1]:白色

[0 0 0]:黑色

内建色图:
在这里插入图片描述

>> surf(peaks)
>> colormap hot

在这里插入图片描述

>> surf(peaks)
>> colormap cool

在这里插入图片描述

>> surf(peaks)
>> colormap summer

在这里插入图片描述

>> surf(peaks)
>> colormap copper

在这里插入图片描述

图形剪裁:

实现方法:将图形中需要裁剪部分对应的函数值设置成 NaN,这样在绘制图形时,函数值为 NaN 的部分将不显示出来,从而达到对图形进行裁剪的目的。

例:绘制 3/4 球面

>> [X, Y, Z] = sphere(60);
>> p = Z>0.5;
>> Z(p) = NaN;
>> surf(X, Y, Z)
>> axis([-1, 1, -1, 1, -1, 1])
>> axis equal
>> view(-45, 20)

在这里插入图片描述

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值