(1)plot函数
(2)Subplot函数
(3)叠加图绘制
(4)其它功能
(5)绘制直线
(6)极坐标绘图
(7)对数和半对数坐标系绘图
(8)双纵轴坐标
(9)窗口和标注
(10)获取和标记数据点
(11)其他绘图
<1>函数fplot( )
<2>函数ezplot( )
<3>函数ezploar( )
<4>函数ezcontour()和ezcontourf()
<5>柱状图
<6>饼状图
<7>直方图
<8>面积图
<9>散点图
<10>等高线绘图
<11>误差图
<12>填充图
<13>火柴杆图
<14>阶梯图
<15>罗盘图
<16>羽毛图
<17>向量场图
<18>彗星图
<19>伪彩色绘图
(12)图形句柄
1.二维数据可视化
MATLAB受到控制界广泛接受的一个重要原因是因为它提供了方便的绘图功能。Matlab提供了一系列的绘图函数,用户不需要过多的考虑绘图的细节,只需要给出一些基本参数就能得到所需图形,这类函数称为高层绘图函数。二维图形的绘制是其它绘图操作的基础,本章主要介绍二维图形的绘制,主要包括二维绘图、图形的标注、特殊图形的绘制,以及交互式绘图等。
在MATLAB中,绘制二维图形最常用的函数是plot( ),该函数的功能非常强大,通过不同的输入,能够绘制不同的图形。该函数的调用格式为:1.函数plot(y) 2.函数plot(x, y) 3.函数plot(x, y, s) 4、函数plot(x1, y1,s1, x2, y2, s2,.….),例如:
<1>plot(x,y):
>> t=0.01:0.01:2*pi;
>> y=sin(t);
>> plot(y)
>> x=1:7;
>> y=magic(7);
>> plot(x,y)
<2>plot(x,y,s):
s表示绘制图线的格式,输入doc plot,可以在doc文档中查看绘图对应的修改模式。
<3>plot(y):
这里y可以是矩阵和向量,横坐标为索引数,纵坐标为索引值 ;
>> y=[3+2i,4+5i,5+7i,6+8i,7+9i,10+6i];
>> plot(y);
>> y=magic(16);
>> plot(y)
在MATLAB中,采用函数subplot( )进行子图绘制。该函数能够将几个图形在同一个图形窗口中绘制出来,且采用不同的坐标系。subplot(m, n, p):该函数将当前图形窗口分成m*n个绘图区,即共m行,每行n个,子绘图区的编号按行优先从左到右编号。该函数选定第p个子图为当前活动区。在每一个子绘图区允许以不同的坐标系单独绘制图形。
x=-pi:pi/10:pi;
subplot(2,2,1);
plot(x,sin(x),'r--');
subplot(223);
plot(x,cos(x),'b:*');
subplot(2,2,[2 4]);
plot(x,sin(x)+cos(x),'g-.^');
在实际应用中,有时需要在已经绘制好的图形上叠加绘制新的图形。在MATLAB中,采用函数hold启动或关闭图形保持功能,该函数的调用格式为:hold on:启动图形保持功能,允许在同一坐标轴上绘制多个图。hold off:关闭图形保持功能,不能在当前坐标轴上再绘制图形。hold:在两种状态hold on和hold off之间进行切换。hold all:实现hold on功能,并且使新的绘图函数依然按顺序循环使用当前坐标系中ColorOrder和LineStyleOrder两个属性。
x=-pi:pi/10:pi;
plot(x,sin(x),'r:>');
hold on;
plot(x,cos(x),'b-<');
在MATLAB中,可以设置函数axis的参数实现对坐标轴进行控制,该函数的调用格式为:axis([xmin xmax ymin ymax]):该函数用于定义x轴和y轴的范围。axis([xmin xmax ymin ymax zmin zmax]):该函数用于定义坐标轴的范围,包含x轴、y轴和z轴的三维图形。axis([xmin xmax ymin ymax zmin zmax cmin cmax]):该函数用于定义三维坐标轴的范围,以及图形的颜色信息。
t = 0.01:0.01:pi;
plot(sin(t),cos(t));
axis([-1 1 -2 2]);
函数axis功能丰富,常用的格式还有:axis equal:横轴和纵轴采用等长刻度。axis square:产生正方形坐标系(系统的缺省设置)。axis auto:使坐标轴范围能够容纳下所有的图形。axis normal:解除对坐标轴的任何限制。axis off:取消坐标轴的一切设置。axis on:恢复坐标辐的一切设置。
在MATLAB中,通过函数grid()给坐标轴加网格线,该函数的调用格式为:grid on:给当前坐标轴添加网格线。grid off:取消当前坐标轴的网格线。grid minor:设置网榕线间的间距。grid:不带参数时,在grid on和grid off之间进行切换。在MATLAB中,通过函数box()给坐标轴加边框,该函数的调用格式为:box on:该函数给当前坐标轴添加边框线。box off:该函数取消当前坐标轴的边框线。box:不带参数时,在box on和box off之间进行切换。
在MATLAB中,通过函数zoom实现图形的缩放,该函数的调用格式为:zoom (factor):该函数以作为缩放因子进行坐标轴的缩放。zoom on:允许对坐标轴进行缩放。zoom off:禁止对坐标轴进行缩放。zoom out:恢复到最初的坐标轴设置。zoom reset:对当前的坐标轴进行复位,恢复到初始值。zoom xon:允许对轴进行缩,放zoom yon:允许对轴进行缩放。zoom:在zoom on和zoom off之间进行切换。
在MATLAB中,采用函数pan()进行图形的拖拽。在进行图形的拖拽时,鼠标变为手的形状。该函数的调用格式为:pan on:该函数打开图形的拖拽功能。pan xon:该函数打开图形在轴方向的拖拽功能。pan yon:该函数打开图形在轴方向的拖拽功能。pan off:该函数关闭图形的拖拽功能。pan:该函数在pan on和pan off之间进行切换。
在MATLAB中,通过函数datacursormode显示鼠标所选的图形上某点的坐标值,该函数的调用格式为:datacursormode on:该函数打开图形的数据光标功能。datacursormode off:该函数关闭图形的数据光标功能。datacursormode:该函数在datacursormode on和datacursormode off之间进行切换。
在MATLAB中,通过函数line()绘制简单的线,该函数的调用格式为:line(x, y):该函数利用参数x和y绘制直线。如果x和y都为向量,必须具有相同的长度,将对应瑾元素作为横、纵坐标进行画线。如果x和y为矩阵,则以对矩阵的每一列作为坐标绘制多条线。line(x,y,z):该函数在三维坐标中进行画线,参数x、y和z为三维坐标系中的坐标值。
在MATLAB中,采用函数polar()进行极坐标系的绘图,该函数的调用格式为:polar(theta,rho):该函数以弧度为theta和半径为rho在极坐标系中进行绘图,极坐标系下的函数为rho=f(theta).polar(theta, rtho, s):该函数通过参数对曲线的线型、标记和颜色等信息进行设置,具体设置信息如下表所示,在MATLAB中,可以通过函数pol2cart()将极坐标系中的坐标值转换为直角坐标系下的坐标值,函数cart2pol()将直角坐标系下的坐标值转换为极坐标系下的坐标值。
theta=0:pi/40:4*pi;
rho=sin(theta);
subplot(211)
polar(theta,rho);
[x,y]=pol2cart(theta,rho);
subplot(212);
plot(x,y);
在MATLAB中,除了采用等比例刻度坐标系绘图,还可以采用对数和半对数坐标系进行绘图。下面对这些函数进行介绍:1.函数semilogx()2、函数semilogy()3、函数loglog( );
x=0.1:0.1:8;
y=log10(x);
subplot(121);
plot(x,y);
title('采用函数plot()绘图');
subplot(122);
semilogx(x,y);
title('采用函数semilogx()绘图')
在MATLAB中,采用函数plotyy()进行双y轴坐标系绘图,横坐标的标度相同。对于两组数据分别采用左侧y轴和右侧y轴,它们的坐标轴范围各自独立,这样就能在一幅图中很好的观察两组数据的变化趋势。
x=0.1:0.1:2*pi;
y=sin(x);
z=10.^x;
plotyy(x,y,x,z,'plot','semilogy');
MATLAB所绘制的图像都显示在图形窗口,提供了丰富的绘图工具。MATALB中图形的标注可以采用绘图工具,也可以采用函数。下面分别进行介绍。在MATLAB中,图形窗口由标题栏、菜单栏、工具条和图形区组成。在杯心内-最小化和关闭按钮。菜单栏包的右侧是图形的最大化、最小化和关闭按钮。菜单栏包括:File(文件) Edit(编辑)、View(视图)Insert(插入)、Tools(工具)、Desktop(桌面Window(窗口)和Help(帮助)。在菜单栏右侧的箭头可以将图形窗口显示在MATLAB的桌面中。通过绘图工具绘制的图形,可以转换为MATLAB程序。通过单击菜单FilelGenerate Code,就可以产生MATLAB程序代码。xlabel是添加x轴横坐标名称,ylabel是添加y轴纵坐标名称。
在MATLAB中,可以通过函数进行图形的标注,也可以直接在图形的编辑模式下进行图形的标注。图形编辑工具条默认情况下是不显示的,通过单击图形窗口中菜单View|Plot Edit Toolbar显示图形编辑工具条。通过图形编辑飞具条可以在图形中插入文字、线条和箭头等,还可以对标注进行对齐。
在MATLAB中,可以通过函数title()给图形添加标题,也可以绘图后通过单击菜单Insert|Title来插入标题。图形的标题位于图形的项端,默认是居中对齐的。函数title()的调用格式为:title('string'):设置当前图形的标题为字符串。title(...,'PropertyName’,'PropertyValue',...):该函数对标题的属性进行设置,例如采用的字体、字体的大小和颜色等。
在进行文字标注时,可以对文字进行控制,常用的设置有:lbf:采用的字体加粗。lit:采用的字体为斜体。Irm:采用标准形式。lfontname {fontname}:设置文字的字体。lfontsize {fontsize}:设置字体的大小。lcolor fcolornamel:对字体的颜色进行设置。此外,还可以采用函数texlabel()将MATLAB的表达式转化为Tex格式的字符串,非常方便的在图形中添加希腊字书或数学公式。
图例(Legend)用来标注图形中不同颜色、线型的数据的图例(Legend)用来标注图形中不同颜色、线型的数据的legend('string1','string2',...)或legend 'string1''string2':添加图例,顺序给出各个图形的描述。legend('off')或legend off:清除图例。legend('toggle')或legend toggle:在显示和清除间切换。legend('hide')或legend hide:隐藏图例。legend('show')或legend show:显示图例。legend('boxoff')或legend boxoff:隐藏图例的边框。legend('boxon')或legend boxon:显示图例的边框。
颜色条用于显示图形中颜色和数值的对应关系,方便用户理解图形,主要用于三维绘图和二维等高线图形中。用户可以通过单击菜单Insert|Colorbar显示颜色条,也可以通过函数colorbar()来添加颜色条。colorbar:该函数判图形添加颜色条,默认在图形外侧的右部,colorbar('Location'):该函数对颜色条的位置设置为字符串Location。
在MATLAB中,可以采用文本框对图形进行标注。添加文本框可以通过绘图后单击Insert|Textbox来添加,也可以通过函数text()和gtext( )来添加。函数text()添加文本框时,需要对文本框放置的位置进行设置,调用格式为text(x, y, 'string'):该函数在二维平面的坐标(x,y)处添加文本框标注,文本的内容为字符串。text(..., 'PropertyName','PropertyValue'):该函数在添加文本框进行标注的同时,对文本的格式进行设置。
函数gtext()是交互式的文本标注工具,可以通过鼠标来选择标注文字放置的位置,该函数的调用格式为:gtext('string'):该函数通过点击鼠标来确定文本框的位置念,文本的内容为字符串。gtext('string1', 'string2',.…):该函数在鼠标点击的位置标注多行文本和等,字符串之间采用逗号分割。gtext('string1'; 'string2';..):该函数通过多次鼠标点击添加多个文本框,字符串之间采用分号进行分割。
二维平面上任一点的坐标值,该函数的调用格式为:[x, y]=ginput(n):该函数通过鼠标选择个点,它们的坐标二维平面上任一点的坐标值,该函数的调用格式为:[x, y]=ginput(n):该函数通过鼠标选择个点,它们的坐标[x, y]=ginput:该函数通过鼠标选择多个点,坐标值保存在和中,通过Enter键结束。[x, y, button]=ginput(….):该函数的返回值记录了在用鼠标选点时的相关信息。
如果只知道某个函数的表达式,也可以绘制将该函数的图形。下面分别进行介绍。1.函数fplot( )2.函数ezplot( )3.函数ezpolar()4、函数ezcontour()和ezcontourf()。
函数fplot( )用于绘制一元函数的图形,右图是fplot函数绘制的,他会把自适应调整图形间距。
x=0:0.01:1;
y=cos(tan(pi*x));
subplot(121);
plot(x,y,'-b');
subplot(122);
fplot('cos(tan(pi*x))',[0 1],1e-4);
函数ezplot( )用于绘制二元函数的图形
subplot(121);
ezplot('x.*y+x.^2+y.^2-1');
subplot(122);
ezplot(@cos,@sin,[-2*pi 2*pi]);
函数ezploar( )用于绘制极坐标图形。
subplot(121);
ezpolar('sin(3*t)',[0 2*pi]);
subplot(122)
ezpolar(@(t) sin(3*t),[0 2*pi]);
subplot(121);
ezcontour('x^2-y^2-1');
subplot(122);
ezcontourf(@peaks);
b在MATLAB中,通过函数bar()绘制柱状图,该函数的调用格式为:bar(y):该函数以y中的值为长度画一个长柱。bar(x, y):该函数在指定的横坐标x上画出y,参数x为单调增加的。如果y为矩阵,则将每个行向量画出bar(.., width):该函数设置柱的宽度,默认值为0.8。如果width大于1,则一组内的柱互相重叠。bar(.. 'style'):该函数的参数style定义形状,取值可以为group或stack默认值为group.ar(..., ‘bar_color'):该函数定义柱的颜色为bar_color.
在MATLAB中,通过函数pie()绘制饼状图,该函数的调用格式为:pie(x):该函数以向量来绘制饼状图。如果sum(x)<1,则以向量x的值为各个分量画饼状图。如果sum(x)>1则进行归一化处理。pie(x, explode):该函数中参数explode与x有相同的维数,其中非零元素对应的向量x的分量在饼状图中向外突出一些。pie(..., labels):该函数用于定义每个分量的标签,和向量x有相同的维数。
在MATLAB中,通过函数hist()绘制直方图,该函数的调用格式为:h=hist(y):该函数将向量y中的元素放到10个柱的直方图中,返回值h为包含每个柱的元素个数组成的向量。如果参数y为矩阵,则按照矩阵的列来画图。h=hist(y, m):参数m为标量,用于指定柱的个数。h=hist(y,x):该函数中参数x为向量,将参数中的元素放到length(x)个由x中元素指定的位置为中心的直方图。
在MATLAB中,通过函数area()绘制面积图,该函数的调用格式为:area(x, y):该函数以参数x和y绘制面积图。如果x和y为向量,则相当于函数plot(x, y),并将0到y之间进行了填充。如果参数y为矩阵,则将y的每一列绘制面积图并进行累计求和。area(y):如果参数y为向量,则绘制面积图;如果y为矩阵则绘制每一列的面积图之和。area(..., level):该函数绘制到y=level的面积图,参数level的默认值为0。
在MATLAB中,通过函数scatter()绘制散点图,该函数的调用格式为:scatter(x, y,s, c):该函数以x和y分别为横坐标和纵坐标,绘制散点,参数s设置散点的大小,参数c设置散点的颜色。scatter(x, y):该函数以x和y分别为横坐标和纵坐标,绘制散点,采用系统默认的大小和颜色。scatter(..., m):该函数设置散点为m,而不是默认的“scatter(.... 'filled'):该函数将空的散点进行填充。
在MATLAB中,还可以利用函数plotmatrix()绘制多个散点图,该函数的调用格式为:plotmatrix(X,Y):该函数中参数X为p*m的矩阵,参数Y为n*p的矩阵,绘制n*m个散点图,其中第(i,j)个散点图是根据矩阵Y的i第列和矩降X的第j列的数据绘制的。plotmatrix(Y):该函数相当于plotmatrix(Y,Y),参数Y为p*n的矩阵时,绘制出n*n个散点图。该图的对角块画出的是矩阵Y的每列数据的频数直方图。plotmatrix(...,'LineSpec'):该函数采用字符串LineSpec设置曲线的线型和颜色等信息。
在MATLAB中,还可以利用函数plotmatrix()绘制多个散点图,该函数的调用格式为:plotmatrix(X,Y):该函数中参数X为p*m的矩阵,参数Y为n*p的矩阵,绘制n*m个散点图,其中第(i,j)个散点图是根据矩阵Y的i第列和矩降X的第j列的数据绘制的。plotmatrix(Y):该函数相当于plotmatrix(Y,Y),参数Y为p*n的矩阵时,绘制出n*n个散点图。该图的对角块画出的是矩阵Y的每列数据的频数直方图。plotmatrix(...,'LineSpec'):该函数采用字符串LineSpec设置曲线的线型和颜色等信息。
在MATLAB中,通过函数errorbar()绘制误差图,该函数的调用格式为:errorbar(y, e):该函数绘制向量y,以及向量y的误差e.errorbar(x, y,e):该函数中x、y和e为同类型的变量errorbar(x, y,e, LineSpec):该函数中利用参数LineSpec来设定线型和颜色等。
在MATLAB中,通过函数fil()绘制多边形填充图,该函数的调用格式为:fill(x,y, c):该函数绘制以向量x和y组成的多边形的填充图,参数c用于设定颜色,可以为表示颜色的字符串,例如: 'r、'g'、'b'.心'y'等,也可以是RGB色彩向量,例如:[1,0, 0]。如果x和y为相同维数的矩阵,则绘制矩阵每一列的多边形填充图。fill(x1, y1, c1, x2, y2, c2,..:该函数绘制多个多边形填充图。
在MATLAB中,通过函数stem()绘制火柴杆图,该函数的调用格式为:stem(y):该函数绘制向量y的火柴杆图。如果y为矩阵,则绘制的每一列的火柴杆图。stem(x, y):该函数绘制横坐标为x的火柴杆图。stem(.., 'filled'):该函数将火柴杆进行填充。stem(..., 'LineSpec'):该函数用于设置火柴杆图的线型和颜色等。
在MATLAB中,通过函数stairs()绘制阶梯图,该函数的调用格式为:stairs(y):该函数绘制向量y的阶梯图。stairs(x, y):该函数绘制横坐标为x的阶梯图。
在MATLAB中,通过函数compass()绘制罗盘图,该函数的调用格式为:compass(u, v该函数绘制罗盘图,从坐标原点指向坐标(u, v)的箭头。compass(z):该函数中z为复数,相当于compass(real(z),imag(z)),compass(...,'LineSpec'):该函数利用参数LineSpec来设定线型和颜色等。
在MATLAB中,通过函数feather( )绘制羽毛图,该函数的调用格式为:feather(u, v):该函数绘制向量u和v的羽毛图.feather(z):该函数中z为复数,相当于feather( real(z),imag(z)).feather(..., ‘Lifespec'):该函数利用参数LineSpec来设定线型和颜色等。
在MATLAB中,通过函数quiver()绘制向量场图,该函数的调用格式为:quiver(x, y, u, v):该函数在坐标(x,y)处绘制向量场图,(u, v)为速度分量。quiver(u, v):该函数绘制向量场图。quiver(..., ‘LineSpec'):该函数利用参数LineSpec来设定
线型和颜色等。quiver(.... ‘LineSpec','filled'):该函数设置为填充模式。
在MATLAB中,通过函数comet()绘制彗星图,该函数的调用格式为:comet(y):该函数绘制由向量y确定路线的慧星图。comet(x,y):该函数绘制由向量x和y确定路线的慧星图。comet(x, y, p):该函数设置彗星体的长度为p*length(y),参数p的默认值为0.1.
在MATLAB中,通过函数pcolor()进行伪彩色绘图,该函数的恶调用格式为:pcolor(C):该函数绘制矩阵C的伪彩色图。pcolor(X,Y,C):该函数采用参数X确定横坐标,参数Y确定纵坐标,绘制伪彩色图。
在MATLAB中,利用函数set()设置图形句柄的属性值,利用函数get()获取图形句柄的属性值。函数set( )的调用格式为:set(H,‘PropertyName',PropertyValue),该函数设置句柄为的图形对象的属性值,将属性设置为PropertyValue.函数get()的调用格式为: get(H,'PropertyName'),该函数获取句柄为PropertyName的图形对象的属性的值。
在MATLAB中,通过函数gca获得当前图形中坐标轴的句柄.通过坐标轴句柄,可以利用函数get()获取坐标轴的属性值,也可以通过函数set()对坐标轴的属性值进行设置。