MATLAB二维绘图.docx
- 文档编号:23316560
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:62
- 大小:924.76KB
MATLAB二维绘图.docx
《MATLAB二维绘图.docx》由会员分享,可在线阅读,更多相关《MATLAB二维绘图.docx(62页珍藏版)》请在冰豆网上搜索。
MATLAB二维绘图
第2章MATLAB二维绘图
数据可视化是MATLAB一项重要功能,它所提供的丰富绘图功能,使得从繁琐的绘图细节中脱离出来,而能够专心于最关心的本质。
通过数据可视化的方法,工程科研人员可以对自己的样本数据的分布、趋势特性有一个直观的了解。
本章将重点介绍MATLAB二维图形的绘制方式,并按照完整的步骤来说明一个图形产生的流程,以便将数据以图形形式来识别。
通过本章,读者不仅能掌握二维绘图的基本流程,而且能熟练使用MATLAB中相应的绘图命令、函数来绘制二维图形。
2.1二维绘图基本流程
在MATLAB中绘制图形,通常采用以下7个步骤:
(1)准备数据;
(2)设置当前绘图区;
(3)绘制图形;
(4)设置图形中曲线和标记点格式;
(5)设置坐标轴和网格线属性;
(6)标注图形;
(7)保存和导出图形。
二维图形的绘制,也通过上述7个步骤来完成。
下面以实例来说明二维绘图的各个主要步骤。
例2-1MATLAB中典型的二维图形绘制流程实例。
在同一坐标轴上绘制sin(x)、sin(2x)和sin(3x)这三条曲线。
解:
在MATLAB中,通过如表2-1所示的步骤来实现上述图形绘制。
表2-1基本绘图流程
绘图步骤
主要工作
1.数据准备
准备好绘图需要的横坐标变量和纵坐标变量数据
2.设置当前绘图区
在指定的位置创建新的绘图窗口,并自动以此窗口的绘图为当前绘图区
3.绘图
创建坐标轴,指定叠加绘图模式,绘制函数曲线
4.设置图形中曲线和标记点格式
设置图形中的线宽、线型、颜色和标记点的形状、大小、颜色等。
5.设置坐标轴和网格线属性
将坐标轴的围设置在指定曲线
6.标注图形
在图形中添加标题、坐标轴标注、文字标注等
7.保存和导出图形
按指定文件格式、属性保存或导出图形
对于此题,在MATLAB编写createfigure函数来实现,createfigure函数的代码如下:
%********************************************************
%程序:
EX201.M
%功能:
作出具有较为完整流程的二维图形
%********************************************************
functioncreatefigure(x1,y1)%创建图形绘制函数
x1=0:
0.02*pi:
2*pi;%定义X1的围及刻度
y1=[sin(x1);sin(2*x1);sin(3*x1)];%定义Y1的围及刻度
figure1=figure('PaperPosition',[0.63456.34520.315.23],'PaperSize',[20.9829.68]);
axes1=axes('Parent',figure1);
axis(axes1,[06.283-22]);%建立坐标轴
title(axes1,'sin(x)/sin(2x)/sin(3x)');%图形标注
xlabel(axes1,'x');
ylabel(axes1,'y');
box(axes1,'on');
hold(axes1,'all');
plot1=plot(x1,y1);%显示图形
text1=text(...
'Position',[1.136-0.95320],...
'String','y=sin(x)',...
'VerticalAlignment','baseline',...
'Parent',axes1);%创立文字标注
text2=text(...
'Position',[2.266-0.89470],...
'String','y=sin(2x)',...
'VerticalAlignment','baseline',...
'Parent',axes1);%创立文字标注
text3=text(...
'Position',[3.3950.89470],...
'String','y=sin(3x)',...
'VerticalAlignment','baseline',...
'Parent',axes1);%创立文字标注
运行该程序后,输出如图2-1所示的结果:
图2-1二维图形绘制输出的结果(例1-1)
在图形的绘制流程中,需要注意的是:
(1)上面所谓的7个步骤的顺序也不是完全固定,尤其是其中对图形进行修饰标注的4、5、6步骤,完全可以改变顺序;
(2)MATLAB中对于图形中的曲线和标记点格式有默认的设置,这在一般情况下是可以满足使用者需要的,因此对于只是想大概察看一下数据分布的用户,只需要进行第1、3步工作就可以了。
2.2二维图形的基本绘图命令
MATLAB提供了两种级别的二维图形基本绘图命令:
(1)高级绘图命令plot
它以一体化的方式绘出图形,即用户只须给出图形定义数据,绘图围、刻度大小等,细节容都可由系统自动确定。
(2)低级绘图命令line
它允许用户在图形窗口的任意位置用低级绘图命令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也可以是一般的二维数组,这时候就是对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:
2*pi;
>>y1=sin(x);
>>y2=cos(x);
>>y3=sin(x-0.1*pi);
>>y4=cos(x+0.1*pi);
>>plot(y1)%如图2-2
>>title('Plot绘图结果')
>>xlabel('x','FontSize',15)
>>ylabel('y','FontSize',8)
运行以上M代码程序,得到图2-2所示的结果图形。
将程序中plot(y1)替换成以下语句,将会得到图2-3所示结果图形。
>>plot(x,y1,x,y2,x,y3,x,y4)%图2-3,注意比较和图2-2的不同
图2-2plot(y1)画线结果(例2-2)
图2-3多组数据的plot结果(例2-2)
从图2-3可以看到,多组数据绘图时,MATLAB默认通过不同的颜色区分了各条曲线。
实际上,plot函数绘图指令中就可以设置各条曲线的颜色、线型等属性,这时候plot函数对应的语法格式为:
plot(X1,Y1,LineSpec,...),
其中LineSpec就是一个指定曲线颜色、线型等特征的字符串。
plot函数采用plot(X1,Y1,LineSpec,...)的语法格式时,可以通过字符串LineSpec指定曲线的线型、颜色以及数据点的标记类型。
这在突出显示原始数据点和个性化区分多组数据的时候是十分有用的。
例如’-.or’就表示连线采用点划线类型,数据点用圆圈标记,颜色都设为红色。
需要注意的是,当指定了数据点标记类型,但不指定线型时,则表示只标记数据点,而不进行连线绘图。
MATLAB默认是用颜色区分多组曲线,但在只能黑白打印或显示的情况下,个性化的设置曲线线型就成了唯一的区分方法。
表2-2列出了MATLAB中可供选择的曲线线型、颜色和标记点类型。
表2-2LineSpec可选字符串列表
线型
颜色
数据点标记类型
标识符
意义
标识符
意义
标识符
意义
-
实线
r
红色
+
加号
-.
点划线
g
绿色
o
圆圈
--
虚线
b
蓝色
*
星号
:
点线
c
蓝绿色
.
点
m
洋红色
x
交叉符号
y
黄色
square(或s)
方格
k
黑色
diamond(或d)
菱形
w
白色
^
向上的三角形
v
向下的三角形
>
向左的三角形
<
向右的三角形
pentagram(或p)
五边形
hexagram(或h)
六边形
例2-3在同一图形窗口中绘制
和
,并用不同的线型、颜色和标记点。
解:
在MATLAB命令窗口中输入以下命令:
>>x=0:
pi/20:
2*pi;
>>y1=sin(x);
>>y2=sin(x+pi/2);
>>plot(x,y1,'r:
',x,y2,'+')
运行程序代码,输出如图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的图形。
解:
在命令窗口输入以下命令:
>>x=0:
0.4*pi:
2*pi;
>>y=sin(x);
>>line(x,y)
运行以上程序代码后,得到如图2-4的图形:
图2-5line函数画线(例2-4)
例2-5画线函数line使用实例。
利用函数line为
和
的图形上加上两条水平线。
解:
在MATLAB命令窗口输入以下代码
>>x=0:
pi/20:
2*pi;
>>y1=sin(x);
>>y2=sin(x+pi/2);
>>plot(x,y1,'r:
',x,y2,'+')%显示图形
>>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命令)、加网络(grid命令)、加图形加图题(title命令)、对图形进行文字注释(text命令)等。
下面将分别进行讲述。
2.2.1坐标轴的调整
MATLAB可以自动根据曲线数据的围选择合适的坐标系,从而使得曲线能够尽可能清晰地显示出来,所以在一般情况下用户不必去进行坐标系的选择。
但是,如果用户对MATLAB所自动生成的坐标轴不太满意的话,则可以利用axis所要绘制出的图形的坐标轴进行调整。
axis命令的功能非常丰富,按常用用法有如下4类:
●调整坐标轴的围;
●调整坐标轴的状态;
●保存调整坐标轴的围;
●保存坐标轴的状态。
2.2.1.1调整坐标轴的围
MATLAB采用axis函数可以根据需要适当调整坐标轴的围,该函数调用格式是:
axis([xminxmaxyminymax])
此函数将所画的X轴的大小围限定在{xmin,xmax}之间,Y轴的大小围限定在{ymin,ymax}之间。
需要说明的是,在绘图时,由于图形的坐标已经给定,所以对坐标轴围参数的更改,其实际效果也就相当于对原图形进行了放大或缩小处理。
例2-6调整坐标轴函数axis使用实例。
利用函数axis调整y=sinx的坐标轴围。
解:
在命令窗口输入下面的代码
>>x=0:
pi/100:
2*pi;
>>y=sin(x);
>>line([0,2*pi],[0,0])
>>holdon;
>>plot(x,y)
>>axis([02*pi-11])
执行程序后,可以得到如图2-7所示的图形。
而如果将最后的一条命令改为:
>>axis([02*pi-22])
就可以画出如图2-8所示的图形,其显示效果就好像对图2-7的Y轴进行了压缩。
图2-7坐标轴调整之前的图形图2-8坐标轴调整之后的图形
2.2.1.2调整坐标轴的状态
MATLAB在绘图功能中可以根据视图需求,适当调整坐标轴状态,该函数的调用格式是:
axis(str)
此函数的功能是将坐标轴的状态设定为字符串参数str所指定的状态。
参数str是由一对单引号(``)所包起来的字符串(也可以省略这对单引号),它表明了将坐标轴调整为哪一种状态。
各种常用字符串的含义如表2-3所示。
表2-3Axis各种常用字符串
命令形式
命令功能
axis([xminxmaxyminymax])
按照用户给出的X轴和Y轴的最大、最小值选择坐标系
axisauto或者axis(`auto`)
自动设置坐标系:
xmin=min(x):
xmax=max(x);
ymin=min(y);ymax=max(y);
axisxy或者axis(`xy`)
使用笛卡尔坐标系
axisij或者axis(`ij`)
使用matrix坐标系。
即:
坐标原点在左上方,x坐标从左向右增大,y坐标从上向下增大
axissquare或者axis(`square`)
将当前图形设置为正方形图形
axiseaual或者axis(`equal`)
将x,y坐标轴的单位刻度设置为相等
axisnormal或者axis(`normal`)
关闭axisequal和axissquare命令
axisoff或者axis(`off`)
关闭网络线、xy坐标的用label命令所加的注释,但保留用图形中text命令和gtext命令所添加的文本说明
axison或者axis(`on`)
打开网络线、xy坐标的用label命令所加的注释
只要不产生矛盾的含义,一些不同的参数str可以同时起作用,即在语句axis(str)的参数中,可以使用多个修饰字符串,如axis(`auto`,`on`,`ij`)。
例2-7坐标轴设置函数axis使用实例。
利用axis函数为y=sinx绘制笛卡尔坐标系。
解:
在命令窗口输入下面的代码
>>x=0:
pi/100:
2*pi;
>>y=sin(x);
>>line([0,2*pi],[0,0])
>>holdon;
>>plot(x,y)
>>axis([02*pi-11])
>>axis(`xy`)或axisxy
输入以上命令设置后,运行程序,可以得出图2-9所示的结果图形。
图2-9笛卡尔坐标系下的正弦曲线图2-10屏幕坐标系下的正弦曲线
笛卡尔坐标系的图形,其坐标系的X轴是从左到右,Y轴是由下向上。
而有时我们需要绘制Y轴是由上向下的图形,即符合屏幕坐标系的图形,这时可由下述命令来设置坐标轴的方向:
>>axis(`ij`)或axisij
此时所绘制出的正弦曲线图形如图2-10所示。
例2-8图形调整函数axis使用实例。
利用函数axis绘制一个半径r=1的单位圆。
解:
在命令窗口直接输入以下程序代码,
>>alpha=0:
0.01:
2*pi;
>>x=sin(alpha);
>>y=cos(alpha);
>>plot(x,y)
>>axis([-1.51.5-1.51.5])
>>gridon
>>axissquare
执行以上程序后,可以得到如图2-11所示的图形。
仔细观察图2-11可知,这个单位圆有点像一个椭圆,这主要是由于计算机屏幕上X方向和Y方向的单位长度不一致造成的。
但下述命令将可以消除这种不一致,从而可以绘制出一个真正的单位圆(如图2-12所示)。
axis(`square`)或axissquare
图2-11未进行刻度调整的单位圆图2-12用axis(`square`)调整刻度后的单位圆
下述的命令也可以消除这种不一致,从而可以绘制出一个标准的单位圆(如图2-11所示)。
axis(`equal`)或axisequal
注意,axis(`square`)的含义是将X坐标轴长度与Y坐标轴长度调整为正方形,而axis(`equal`)的含义是将X坐标轴和Y坐标轴的单位刻度大小调整一样长短。
若用下述命令却可以将图形恢复显示为刻度调整前的形式(图2-11)。
axis(`normal`)或axisnormal
用下述命令可以关闭或打开图形的坐标轴。
axis(`off`)或axisoff
axis(`on`)或axison
图2-14所示为用axis(`off`)命令将图2-13所示图形去掉坐标轴后的单位圆。
图2-13用axis(`equal`)调整刻度后的单位圆图2-14用axis(`off`)去掉坐标轴后的单位圆
2.2.1.3保存坐标轴的围
MATLAB中有一种可以将坐标轴的围值[xminxmaxyminymax]存储到向量variable中的功能,该功能实现的格式是:
variable=axis
变量variable保存的是一个向量值,显然这个向量值能够以axis(variable)的形式应用于设定坐标轴的大小围。
例2-9对于由例2-8程序所绘制出的图2-11,检查其坐标轴的围。
解:
在命令窗口输入下面的代码,可以实现检查坐标轴的围
>>AxisRange=axis
AxisRange=
-1.50001.5000-0.63630.6363
2.2.1.4保存坐标轴的状态
MATLAB中可以将当前所使用的坐标轴的状态存储到向量中,这种功能的格式是
[s1,s2.s3]=axis(`state`),该功能是将当前所使用的坐标轴的状态存储到向量[s1,s2,s3]中。
在使用该功能时,需要说明以下几点:
(1)s1说明是否自动设定坐标轴的围,取值为`auto`或`manual`;
(2)s2说明是否关闭坐标轴,取值为`on`或`off`;
(3)s3说明所使用的坐标轴的种类,取值为`xy`或`ij`。
例2-10对于例2-8程序所绘制的图2-11,检查其坐标轴的当前状态。
解:
在命令窗口输入以下的代码:
>>[s1,s2,s3]=axis(`state`)
s1=
manual
s2=
on
s3=
xy
2.2.2画出或取消网格线
在MATLAB二维图形中,有无网格线对于图形的显示效果有很大的影响,我们利用grid函数就可以轻松实现对二维图形中网格线的显示进行控制。
grid函数使用的基本格式为:
(1)gridon
功能是在所画出的图形中添加网格线。
(2)gridoff
功能是将已有的网格线的图形去掉其网格线。
例2-11网格线控制函数grid使用实例。
利用grid命令去掉单位圆图形的网格线。
解:
在命令窗口直接输入以下程序代码,
>>alpha=0:
0.01:
2*pi;
>>x=sin(alpha);
>>y=cos(alpha);
>>plot(x,y)
>>axis([-1.51.5-1.51.5])
>>gridon
>>axissquare
运行程序后,可以得到如图2-16所示的图形:
图2-15带有网格线的图形图2-16不带有网格线的图形
2.2.3设置坐标轴的名称
添加并设置坐标轴标签的函数是xlabel和ylabel,格式为:
(1)xlabel('string')
设置横轴标签为字符串值。
(2)xlabel(...,'PropertyName',PropertyValue,...)
在设置横轴标签值的同时设置其相关属性,比如文字颜色、旋转角度、字体、加粗等。
通过插入菜单的XLabel、YLabel项可以设置图形的横轴和纵轴的标签,默认情况下,横轴标签被安排在横轴下方中间位置并且水平排列,纵轴标签被安排在纵轴左方位置并且垂直排列。
坐标轴标签和标题类似,虽然有属于文本,但又不同于普通的文本标注,当用户平移、缩放坐标轴时,坐标轴标签会随着变化以适应变化后的坐标轴位置。
例2-12坐标轴标注函数xlabel和ylabel使用实例。
利用已有数据作出降水量图,并标注坐标轴标签。
解:
在M程序编辑器中输入以下代码:
%********************************************************
%程序:
EX212.M
%功能:
1997-2006年年平均降水量
%********************************************************
x=[1997:
1:
2006];
y=[1.450.912.30.861.460.951.00.961.210.74];
xin=1997:
0.2:
2006;
yin=spline(x,y,xin);
plot(x,y,'ob',xin,yin,'-.r')
title('1997年到2006年年平均降水量图')
xlabel('\it年份','FontSize',15)
ylabel('每年降雨量','FontSize',8)
保存以上M程序文件,执行程序后得到图2-16所示的结果:
图2-17坐标轴标签(例2-12)
2.2.4设置图形标题
MATLAB中有专门的函数title来为图形添加标题,调用这种函数的格式是:
(1)title('string')
设置当前绘图区的标题为字符串string的值。
(2)title(...,'PropertyName',PropertyValue,...)
可以在添加或设置标题的同时,设置标题的属性,如字体、颜色、加粗等。
例2-13图形标注函数title使用实例。
利用title函数为图形添加标题。
解:
在命令窗口输入下面的代码
>>x=0:
0.05:
10;
>>y=exp(-0.2*x).*cos(x);
>>plot(x,y)
>>title('\ite^{0.2x}cos(x)','FontWeight','Bold')
执行程序后,可以得到2-18所示结果图形:
图2-18设置图形标题(例2-13)
2.2.5在图形中显示文字
MATLAB允许用户在图形的任意位置加注一串文字。
加注文字的时候,MATLAB提供了两种不同确定文字位置的操作方式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 二维 绘图