1、%功能:作出具有较为完整流程的二维图形function createfigure(x1, y1)%创建图形绘制函数x1=0:0.02*pi:2*pi; % 定义X1的围及刻度y1=sin(x1);sin(2*x1);sin(3*x1); %定义Y1的围及刻度figure1 = figure(PaperPosition,0.6345 6.345 20.3 15.23,PaperSize,20.98 29.68);axes1 = axes(Parent,figure1);axis(axes1,0 6.283 -2 2); %建立坐标轴title(axes1,sin(x)/sin(2x)/sin(3
2、x); %图形标注xlabel(axes1,xylabel(axes1,ybox(axes1,onhold(axes1,all plot1 = plot(x1,y1); %显示图形 text1 = text(. Position,1.136 -0.9532 0,.String,y=sin(x),.VerticalAlignmentbaseline,axes1); %创立文字标注text2 = text(.,2.266 -0.8947 0,.y=sin(2x)text3 = text(.,3.395 0.8947 0,.y=sin(3x)运行该程序后,输出如图2-1所示的结果:图2-1 二维图形
3、绘制输出的结果(例1-1)在图形的绘制流程中,需要注意的是:(1)上面所谓的7个步骤的顺序也不是完全固定,尤其是其中对图形进行修饰标注的4、5、6步骤,完全可以改变顺序;(2)MATLAB中对于图形中的曲线和标记点格式有默认的设置,这在一般情况下是可以满足使用者需要的,因此对于只是想大概察看一下数据分布的用户,只需要进行第1、3步工作就可以了。2.2 二维图形的基本绘图命令MATLAB提供了两种级别的二维图形基本绘图命令:(1)高级绘图命令plot它以一体化的方式绘出图形,即用户只须给出图形定义数据,绘图围、刻度大小等,细节容都可由系统自动确定。(2)低级绘图命令line它允许用户在图形窗口的
4、任意位置用低级绘图命令line画直线或折线。下面分别进行讲述。2.2.1高级绘图命令plot函数是MATLAB中最核心的二维绘图函数,它有多种语法格式可以实现多种功能。(1)最简单的用法plot(Y)当Y是一维数组时,plot(Y)是把(i,X(i)各点顺次连接起来,其中i的取值围从1到length(X)。当Y是普通的二维数组时,相当于对Y的每一列进行plot(Y(:,i)画线,并把所有的折线累叠绘制在当前坐标轴下。(2)最常用的用法plot(X,Y)plot最常用的语法格式是接受两个参数的plot(X,Y)当X和Y都是一维数组时,功能和line(X,Y)类似;但plot函数中的X和Y也可以是
5、一般的二维数组,这时候就是对X和Y的对应列画线。特别的,当X是一个向量,Y是一个在某一方向和X具有相同长度的二维数组时,plot(X,Y)则是对X和Y的每一行(或列)画线。(3)拓展的用法plot(X1,Y1,X2,Y2,.Xn,Yn)对多组变量同时进行绘图了,对于每一组变量,其意义同前所述。例2-2高级绘图函数plot绘图实例。利用plot(x)和多组变量的语法格式绘制y=sinx、y=cosx、y=sin(x-0.1)、y=cos(x+0.1)的二维图形。在MATLAB命令窗口中输入以下命令:x=0:0.4*pi:y1=sin(x);y2=cos(x);y3=sin(x-0.1*pi);y
6、4=cos(x+0.1*pi);plot(y1) %如图2-2title(Plot绘图结果 )xlabel(FontSize,15)ylabel(,8)运行以上M代码程序,得到图2-2所示的结果图形。将程序中plot(y1)替换成以下语句,将会得到图2-3所示结果图形。plot(x,y1,x,y2,x,y3,x,y4) %图2-3,注意比较和图2-2的不同图2-2 plot(y1)画线结果(例2-2)图2-3 多组数据的plot结果(例2-2)从图2-3可以看到,多组数据绘图时,MATLAB默认通过不同的颜色区分了各条曲线。实际上,plot函数绘图指令中就可以设置各条曲线的颜色、线型等属性,这
7、时候plot函数对应的语法格式为:plot(X1,Y1,LineSpec,.),其中LineSpec就是一个指定曲线颜色、线型等特征的字符串。plot函数采用plot(X1,Y1,LineSpec,.)的语法格式时,可以通过字符串LineSpec指定曲线的线型、颜色以及数据点的标记类型。这在突出显示原始数据点和个性化区分多组数据的时候是十分有用的。例如-.or就表示连线采用点划线类型,数据点用圆圈标记,颜色都设为红色。需要注意的是,当指定了数据点标记类型,但不指定线型时,则表示只标记数据点,而不进行连线绘图。MATLAB默认是用颜色区分多组曲线,但在只能黑白打印或显示的情况下,个性化的设置曲线
8、线型就成了唯一的区分方法。表2-2列出了MATLAB中可供选择的曲线线型、颜色和标记点类型。表2-2 LineSpec可选字符串列表线型颜色数据点标记类型标识符意义-实线r红色+加号-.点划线g绿色o圆圈-虚线b蓝色*星号:点线c蓝绿色.点m洋红色x交叉符号y黄色square(或s)方格k黑色diamond(或d)菱形w白色向上的三角形v向下的三角形向左的三角形向右的三角形pentagram(或p)五边形hexagram(或h)六边形例2-3在同一图形窗口中绘制和,并用不同的线型、颜色和标记点。pi/20:y2=sin(x+pi/2);plot(x,y1,r:,x,y2,+运行程序代码,输出如
9、图2-4所示的结果图形:图2-4不同线性、不同颜色、不同标记点的图形(例2-3)2.2.2低级绘图命令MATLAB允许用户在图形窗口的任意位置用低级绘图命令line画直线或折线。line函数的常用语法格式为:line(X,Y)其中X,Y都是一维数组,line(X,Y)能够把(X(i),Y(i)代表的各点用线段顺次连接起来,从而绘制出一条折线。例2-4画线函数line使用实例。利用函数line绘制y=sinx的图形。在命令窗口输入以下命令:y=sin(x);line(x,y)运行以上程序代码后,得到如图2-4的图形:图2-5 line函数画线(例2-4)例2-5画线函数line使用实例。利用函数
10、line为的图形上加上两条水平线。在MATLAB命令窗口输入以下代码) %显示图形line(0,7,0.5,0.5)line(0,7,-0.5,-0.5)运行该程序代码,输出图2-5所示结果图形:图2-6添加有水平线的二维曲面图(例2-5)2.2 二维图形的修饰由前面的图2-1至2- 6可以看出,当利用plot命令绘图时,虽然运用起来比较简单,但它所自动产生的图形却显得有些简单,未能产生特殊的效果。为此MATLAB提供了一些图形函数,专门对由plot命令所画出的图形进行进一步的修饰,以使其更加美观、更便于应用。如坐标轴围的设定(axis命令)、加坐标轴名称(xlabel、ylabel命令)、加
11、网络(grid命令)、加图形加图题(title命令)、对图形进行文字注释(text命令)等。下面将分别进行讲述。2.2.1 坐标轴的调整MATLAB可以自动根据曲线数据的围选择合适的坐标系,从而使得曲线能够尽可能清晰地显示出来,所以在一般情况下用户不必去进行坐标系的选择。但是,如果用户对MATLAB所自动生成的坐标轴不太满意的话,则可以利用axis所要绘制出的图形的坐标轴进行调整。axis命令的功能非常丰富,按常用用法有如下4类:调整坐标轴的围;调整坐标轴的状态;保存调整坐标轴的围;保存坐标轴的状态。2.2.1.1 调整坐标轴的围MATLAB采用axis函数可以根据需要适当调整坐标轴的围,该函
12、数调用格式是:axis(xmin xmax ymin ymax)此函数将所画的X轴的大小围限定在xmin,xmax之间,Y轴的大小围限定在ymin,ymax之间。需要说明的是,在绘图时,由于图形的坐标已经给定,所以对坐标轴围参数的更改,其实际效果也就相当于对原图形进行了放大或缩小处理。例2-6调整坐标轴函数axis使用实例。利用函数axis调整y=sinx的坐标轴围。在命令窗口输入下面的代码pi/100:line(0,2*pi,0,0) hold on;plot(x,y)axis(0 2*pi -1 1) 执行程序后,可以得到如图2-7所示的图形。而如果将最后的一条命令改为:axis(0 2*
13、pi -2 2)就可以画出如图2-8所示的图形,其显示效果就好像对图2-7的Y轴进行了压缩。图2-7 坐标轴调整之前的图形图2-8坐标轴调整之后的图形2.2.1.2 调整坐标轴的状态MATLAB在绘图功能中可以根据视图需求,适当调整坐标轴状态,该函数的调用格式是:axis(str)此函数的功能是将坐标轴的状态设定为字符串参数str所指定的状态。参数str是由一对单引号()所包起来的字符串(也可以省略这对单引号),它表明了将坐标轴调整为哪一种状态。各种常用字符串的含义如表2-3所示。表2-3 Axis各种常用字符串命令形式命令功能按照用户给出的X轴和Y轴的最大、最小值选择坐标系axis auto
14、或者axis(auto)自动设置坐标系:xmin=min(x):xmax=max(x); ymin=min(y);ymax=max(y);axis xy或者axis(xy)使用笛卡尔坐标系axis ij或者axis(ij)使用matrix坐标系。即:坐标原点在左上方,x坐标从左向右增大,y坐标从上向下增大axis square或者axis(square)将当前图形设置为正方形图形axis eaual或者axis(equal)将x,y坐标轴的单位刻度设置为相等axis normal或者axis (normal)关闭axis equal和axis square命令axis off或者axis(of
15、f)关闭网络线、xy坐标的用label命令所加的注释,但保留用图形中text命令和gtext命令所添加的文本说明axis on或者axis(on)打开网络线、xy坐标的用label命令所加的注释只要不产生矛盾的含义,一些不同的参数str可以同时起作用,即在语句axis(str)的参数中,可以使用多个修饰字符串,如axis(auto,on,ij)。例2-7 坐标轴设置函数axis使用实例。利用axis函数为y=sinx绘制笛卡尔坐标系。axis(xy) 或 axis xy输入以上命令设置后,运行程序,可以得出图2-9所示的结果图形。图2-9 笛卡尔坐标系下的正弦曲线图2-10屏幕坐标系下的正弦曲
16、线笛卡尔坐标系的图形,其坐标系的X轴是从左到右,Y轴是由下向上。而有时我们需要绘制Y轴是由上向下的图形,即符合屏幕坐标系的图形,这时可由下述命令来设置坐标轴的方向:axis(ij) 或 axis ij此时所绘制出的正弦曲线图形如图2-10所示。例2-8 图形调整函数axis使用实例。利用函数axis绘制一个半径r=1的单位圆。在命令窗口直接输入以下程序代码,alpha=0:0.01:x=sin(alpha);y=cos(alpha);axis(-1.5 1.5 -1.5 1.5)grid onaxis square执行以上程序后,可以得到如图2-11所示的图形。仔细观察图2-11可知,这个单位
17、圆有点像一个椭圆,这主要是由于计算机屏幕上X方向和Y方向的单位长度不一致造成的。但下述命令将可以消除这种不一致,从而可以绘制出一个真正的单位圆(如图2-12所示)。axis(square) 或 axis square图2-11未进行刻度调整的单位圆图2-12用axis(square)调整刻度后的单位圆 下述的命令也可以消除这种不一致,从而可以绘制出一个标准的单位圆(如图2-11所示)。 axis(equal) 或 axis equal注意,axis(square)的含义是将X坐标轴长度与Y坐标轴长度调整为正方形,而axis(equal)的含义是将X坐标轴和Y坐标轴的单位刻度大小调整一样长短。若
18、用下述命令却可以将图形恢复显示为刻度调整前的形式(图2-11)。axis(normal) 或 axis normal用下述命令可以关闭或打开图形的坐标轴。axis(off) 或 axis offaxis(on)或 axis on图2-14所示为用axis(off)命令将图2-13所示图形去掉坐标轴后的单位圆。图2-13用axis(equal)调整刻度后的单位圆图2-14用axis(off)去掉坐标轴后的单位圆2.2.1.3 保存坐标轴的围MATLAB中有一种可以将坐标轴的围值xmin xmax ymin ymax存储到向量variable中的功能,该功能实现的格式是:variable=axis
19、变量variable保存的是一个向量值,显然这个向量值能够以axis(variable)的形式应用于设定坐标轴的大小围。例2-9 对于由例2-8程序所绘制出的图2-11,检查其坐标轴的围。在命令窗口输入下面的代码,可以实现检查坐标轴的围AxisRangeaxisAxisRange -1.5000 1.5000 -0.6363 0.63632.2.1.4 保存坐标轴的状态MATLAB中可以将当前所使用的坐标轴的状态存储到向量中,这种功能的格式是s1,s2.s3=axis(state),该功能是将当前所使用的坐标轴的状态存储到向量s1,s2,s3中。在使用该功能时,需要说明以下几点:(1)s1说明
20、是否自动设定坐标轴的围,取值为auto或manual;(2)s2说明是否关闭坐标轴,取值为on或off;(3)s3说明所使用的坐标轴的种类,取值为xy或ij。例2-10对于例2-8程序所绘制的图2-11,检查其坐标轴的当前状态。在命令窗口输入以下的代码:s1,s2,s3=axis(state)s1=manuals2=ons3=xy2.2.2画出或取消网格线 在MATLAB二维图形中,有无网格线对于图形的显示效果有很大的影响,我们利用grid函数就可以轻松实现对二维图形中网格线的显示进行控制。grid函数使用的基本格式为:(1)grid on功能是在所画出的图形中添加网格线。(2)grid of
21、f功能是将已有的网格线的图形去掉其网格线。例2-11网格线控制函数grid使用实例。利用grid命令去掉单位圆图形的网格线。 运行程序后,可以得到如图2-16所示的图形:图2-15 带有网格线的图形图2-16 不带有网格线的图形2.2.3设置坐标轴的名称添加并设置坐标轴标签的函数是xlabel和ylabel,格式为:(1)xlabel(string设置横轴标签为字符串值。(2)xlabel(.,PropertyName,PropertyValue,.)在设置横轴标签值的同时设置其相关属性,比如文字颜色、旋转角度、字体、加粗等。通过插入菜单的X Label、Y Label项可以设置图形的横轴和纵
22、轴的标签,默认情况下,横轴标签被安排在横轴下方中间位置并且水平排列,纵轴标签被安排在纵轴左方位置并且垂直排列。坐标轴标签和标题类似,虽然有属于文本,但又不同于普通的文本标注,当用户平移、缩放坐标轴时,坐标轴标签会随着变化以适应变化后的坐标轴位置。例2-12坐标轴标注函数xlabel和ylabel使用实例。利用已有数据作出降水量图,并标注坐标轴标签。 解:在M程序编辑器中输入以下代码:EX212.M1997-2006年年平均降水量 x=1997:1:2006; y=1.45 0.91 2.3 0.86 1.46 0.95 1.0 0.96 1.21 0.74;xin=1997:0.2:2006;
23、yin=spline(x,y,xin);plot(x,y,ob,xin,yin,-.r1997年到2006年年平均降水量图it年份每年降雨量保存以上M程序文件,执行程序后得到图2-16所示的结果:图2-17 坐标轴标签(例2-12)2.2.4设置图形标题MATLAB 中有专门的函数title来为图形添加标题,调用这种函数的格式是:(1)title(设置当前绘图区的标题为字符串string的值。(2)title(.,可以在添加或设置标题的同时,设置标题的属性,如字体、颜色、加粗等。例2-13图形标注函数title使用实例。利用title函数为图形添加标题。0.05:10;y=exp(-0.2*x).*cos(x);ite0.2xcos(x)FontWeightBold执行程序后,可以得到2-18所示结果图形:图2-18 设置图形标题(例2-13)2.2.5在图形中显示文字MATLAB允许用户在图形的任意位置加注一串文字。加注文字的时候,MATLAB提供了两种不同确定文字位置的操作方式
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1