第4章绘制图形讲稿_第4章绘制图形
第4章绘制图形讲稿由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“第4章绘制图形”。
第4章 绘制图形
MATLAB具有强大的绘图能力,它将科学计算与科学图形绘制比较完美地结合起来。利用MATLAB提供的绘图函数可以绘制基本二维图形、三维线性图和表面图,以及进行三维体可视化。利用句柄图形对象,可以进行图形定制,创建自己的图形类型和样式。
4.1 绘制二维图形
MATLAB提供了很多绘图函数。利用它们,可以绘制线形图、条形图等基本图形,也可以绘制不同坐标系下的图形(如对数坐标图、极坐标图等),还可以绘制不同专业用到的功能图形(如玫瑰图、阶梯图等)。4.1.1 线形图、条形图和面积图
这几种图形在功能上比较相似,都是以直观的形式表示数据的分布特征。绘制线形图、条形图、面积图分别使用plot函数、bar函数和area函数。
例4-1 作面积图。
程序:
x=[1 2 3 4 5 6 7 8];y=[10 9 18 20 25 32 25 40];area(x,y)%作面积图 运行结果见图4-1。
图4-1 面积图
饼图显示4种产品的销量分别占总销量的比例。将第2年销量对应的扇区分离显示。
例4-3 三维饼图
程序:
x=[10 33 55 15];explode=[0 1 0 0];pie3(x,explode)%作三维鉼图 colormap summer 说明:其中explode变量指定进行分离显示的扇区,要分离的扇区用1表示,否则用0表示。
运行结果见图4-3。
图4-3 三维鉼图
4.1.3 误差条图
误差条图显示数据的置信区间或沿曲线的偏差。用errorbar函数绘误差条图,该函数的简单调用格式为:
调用格式为:
●scatter(X,Y,S,C):在矢量X和Y指定的位置上显示彩色圆圈。X和Y必须大小相同。S确定标记的大小。它可以是与X和Y长度相同的矢量,也可以是一个标量。若S为标量,则MATLAB将所有的标记绘成相同大小。C确定每个标记的颜色。当C为X和Y长度相同的矢量时,将根据C中的值进行线性着色。当C为length(X)×3的矩阵时,用RGB值指定标记的颜色。C也可以是一个颜色字符串。默认时用„o‟作为散点标记。
●scatter(X,Y):用大小和颜色的默认设值绘标记。
●scatter(X,Y,S):使用一种颜色,用指定的大小绘标记。●scatter(…,markertype):用指定的标记类型替代„o‟。●scatter(…,„filled‟):填充标记。
●h=scatter(…):返回scatter函数创建的直线对象的句柄。例4-5 利用随机数绘散点图 程序: x=[1:80];y=rand(size(x));scatter(x,y,'filled','b')%绘散点图 运行结果见图4-5。
10.90.80.70.60.50.40.30.20.***7080
图4-5 散点图
4.1.6 对数坐标图和半对数坐标图
在MATLAB中,用loglog函数可以实现双对数坐标转换,用semilogx和semilogy函数可以实现单轴对数坐标转换。在一元非线性回归问题中有广泛的应用。
⒈ 对数坐标图
用loglog函数绘对数-对数比例图。其简单的调用格式为: ●loglog(Y):x轴与y轴均取以10为底的对数比例。若Y的列值均为实数,则根据Y的列值和它们的对应编号绘图。若Y的列值为复数,则loglog(Y)和loglog(real(Y),imag(Y))等价,即根据Y各元素的实部和虚部数据绘图。
●loglog(X,Y):根据X和Y匹配数据绘图。●loglog(X,Y,LineSpec,…):绘制由X,Y和LineSpec等定义的线条。其中,LineSpec决定线型、标记和图中线形的颜色。
例4-7 绘对数-对数比例图 程序:
x=1:100;y=1./x;loglog(x,y)%绘对数-对数比例图 运行结果见图4-7。
图4-7 对数-对数比例图
⒉ 半对数坐标图
用semilogx函数和semilogy函数分别对x轴和y轴绘半对数坐标数据图。其简单的调用格式为:
例4-9 可以用plotyy函数在同一幅图中应用线性坐标和对数坐标。%在同一幅图中应用线性坐标和对数坐标。程序:
t=0:900;A=1000;a=0.005;b=0.005;z1=A*exp(-a*t);z2=sin(b*t);[haxes,hline1,hline2]=plotyy(t,z1,t,z2,'semilogy','plot');axes(haxes(1))ylabel('Semilog Plot')axes(haxes(2))ylabel('Linear Plot')set(hline2,'LineStyle','--')运行结果见图4-9。
图4-9 在双轴图中应用对数坐标
4.1.8 极坐标图
用polar函数绘极坐标图。其调用格式为:
●polar(theta,rho):根据角度theta和半径rho创建极坐标图。
●polar(theta,rho,LineSpec):LineSpec指定极坐标图中直线的线型、标记和颜色。
[xmin xmax ymin ymax]。function必须是M文件函数的名称或句柄,或者含有变量x的字符串。
●fplot(function,limits,LineSpec):用LineSpec指定的属性绘图。
●fplot(function,limits,tol):用相对容限tol绘图,默认时,tol为2e-3。●fplot(function,limits,tol,LineSpec):使用相对容限tol和LineSpec指定的属性绘图。
●fplot(function,limits,n):用最少n+1个点绘函数的图形。默认时n为1。最大步长限制为(1/n)*(xmax-xmin)。
●fplot(function,limits,…):接受可选参数tol,n和LineSpec的组合。●fplot(axes_handle,…):将图形绘制到axes_handle指定的坐标系中。●[X,Y]=fplot(function,limits,…):将横坐标和纵坐标返回到X和Y中。该格式不绘图,但可以用plot(X,Y)绘图。
例4-11 创建一个M文件,它返回一个两列矩阵。再创建一个函数句柄,并作图。
程序:
%创建一个函数(文件名:example4_1_10a.m),它返回一个两列矩阵 function y=example4_1_10a(x)y(:,1)=200*sin(x(:))./x(:);y(:,2)=x(:)^2;%创建一个函数句柄,并作图。fh=@example4_1_10a;fplot(fh,[-20 20])运行结果见图4-11。
图4-11 用矩阵数据绘图
14.2.2 用给定数据绘三维表面图
当绘图数据已知时,可以用mesh、surf和surfl等函数直接绘制网格图、刻面图和曲面图。
⒈ 网格图
网格图常用于表现二维平面或三维实体。作为前处理,网格图常常用于建立二维、三维有限元计算的几何模型。其中的网格,可以是三角形网格,也可以是四边形网格,还可以是其他多边形网格。MATLAB中提供了四边形和三角形两种三维网格图形的生成函数,可以用它们进行绘图。这里仅介绍四边形网格图。
用mesh、meshc和meshz函数绘四边形网格图。其简单调用格式为: ●mesh(X,Y,Z):绘网格,用高度Z确定颜色。颜色与高度成比例。X和Y为矢量,length(X)=n,length(Y)=m,其中[m,n]=size(Z)。本例中X(j),Y(i),Z(i,j)为网格线的交点;X和Y对应于Z的列和行。
●mesh(Z):用X=1:n和Y=1:m绘一个网格,其中[m,n]=size(Z)。高度Z为矩形网格上的单值函数。颜色与高度成比例。
●meshc(…):在网格下方画一个等值线图。●meshz(…):在网格周围画一个窗帘图。
例4-13 生成peaks函数的网格图与等值线图的组合图。程序:
[X,Y]=meshgrid(-3:0.125:3);Z=peaks(X,Y);meshc(X,Y,Z);colormap colorcube;axis([-3 3-3 3-10 5])运行结果见图4-13。
图4-13 网格图与等值线图的组合图
3●surfc(…):在刻面图下方绘一个等值线图。
例4-15 生成peaks函数的刻面图和等值线图的组合图。程序:
[x,y,z]=peaks(50);surfc(x,y,z)colormap colorcube axis([-3 3-3 3-10 6])运行结果见图4-15。
图4-15 刻面图和等值线图的组合图
⒊ 曲面图
三维曲面图对三维刻面图中三角形或四边形单元的颜色进行了平滑,因而更接近实体外观。
使用surfl函数,用基于颜色查找表的光照绘曲面图。其简单的调用格式为: ●surfl(Z)和surfl(X,Y,Z):使用默认的光源方向和默认的阴影模型中的光照系数创建三维刻面图。X,Y和Z为矢量或矩阵,定义曲面的x,y和z分量。
例4-16 用基于颜色查找表的光照生成peaks函数的曲面图。程序:
[X,Y]=meshgrid(-3:1/5:3);Z=peaks(X,Y);surfl(X,Y,Z);
5例4-17 作x2y21的曲线图。程序:
ezplot('x^2-y^2-1')运行结果见图4-17。
图4-17 函数的曲线图
三维参数曲线用ezplot3函数绘制。该函数有3种语法格式: ●ezplot3(x,y,z)●ezplot3(x,y,z,[tmin,tmax])●ezplot3(…,„animate‟)
其中,曲线用x=x(t),y=y(t)和z=z(t)的形式表示,默认时,参数取值范围为0
例4-18 作下面参数方程的曲线图
xet/10ysintcost zt程序:
ezplot3('exp(t/10)','sin(t)*cos(t)','t',[0,6*pi],'animate')
7程序:
ezmesh('y^2-3*x*y+x^2')运行结果见图4-19。
图4-19 函数的三维网格图
⑵用ezsurf函数绘制函数表示的曲面。
例4-20 用ezsurf函数绘制下列函数的曲面图
zx23xyy2
程序:
ezsurf('y^2-3*x*y+x^2')4.2.4 二次曲面
二次曲面是一种参数曲面,可以用一定的数学方程来表示。变换方程中的参数,可以改变曲面的形态。柱面、球面和锥面是常见的二次参数曲面。MATLAB提供了创建柱面(cylinder函数)和球面(sphere函数)的函数。
习题四
1、完成实验指导书中的实验四。