第五讲 Matlab画图
理论介绍:Matlab画图函数及常见注意事项
画图实例:连续画图自动改变颜色和线型,图片复制到论文中的方法
数据图形能直观反应数据的内在本质和内在联系,借助Matlab画图函数可以表达出数据的二维,三维,甚至四维的图形。通过图形的线型,立面,色彩,光线,视角等属性的控制,可把数据的内在特征表现得淋漓尽致。 一.二维图形的画图
1.plot函数用于绘制线型二维图,调用格式为plot(X,Y), 当X,Y均为实数向量,且为同维向量(可以不是同型向量),X=[x(i)],Y=[y(i)],则plot(X,Y)先描出点(x(i),y(i)),然后用直线依次相连;若X,Y为复数向量,则不考虑虚数部分。在线条多于一条时,若用户没有指定使用颜色,则plot循环使用由当前坐标轴颜色顺序属性(current axes ColorOrder property)定义的颜色,以区别不同的线条。函数plot的属性:线型、颜色、标记说明(略)。
2. fplot 函数用于在指定的范围limits内画出函数为function的一元函数图形。调用格式为:fplot(function,limits),其中limits是一个指定x-轴范围的向量[xmin xmax]或者是x轴和y轴的范围的向量[xmin xmax ymin ymax],函数function必须是一个m-文件函数或者是符号函数表达式。
[X,Y] = fplot('function',limits) 返回横坐标与纵坐标的值给变量X和Y,此时fplot不画出图形。若想画出,可用命令plot(X,Y)。
注意:fplot采用自适应步长控制来画出函数function的示意图,在函数的变化激烈的区间,采用小的步长,否则采用大的步长。总之,使计算量与时间最小,图形尽可能精确。
3.函数loglog绘制双对数图形,调用格式 loglog(Y)中 若y为实数向量或矩阵,则结合y列向量的下标与y的列向量画出。若y为复数向量或矩阵,则loglog(Y)等价于loglog(real(Y),imag(Y))。而格式 loglog(X1,Y1,X2,Y2…) 结合Xn与Yn画出图形。
4.semilogx、semilogy绘制 x、y轴对数图形,用法同loglog函数。 >>x = 0:.1:10;
>>semilogx(x,cos(10.^x))
5.函数fill用颜色填充二维多边形, fill(X,Y,C) 用c指定的颜色填充x和y
1
中的数据生成多边形,其中c为色图向量或矩阵。
>>t = (1/16:1/8:1)'*2*pi; >>x = exp(t).*sin(t); >>y = t.*cos(t); >>fill(x,y,'k') >>grid on
6.函数zoom 对二维图形进行放大或缩小。放大或缩小会改变坐标轴范围, zoom on 打开交互式的放大功能。当一个图形处于交互式的放大状态时,左击坐标轴内的任意一点,可使图形放大一倍,这一操作可进行多次,直到matlab的最大显示为止;而右击坐标轴内任意一点,可使图形缩小一倍,这一操作可进行多次,直到还原图形为止。 zoom off 关闭交互式放大功能。
zoom out 将系统转回非放大状态,并将图形恢复原状。 zoom reset 系统将记住当前图形的放大状态。 zoom 用于切换放大的状态:on和off。 zoom xon 只对x轴进行放大。 zoom yon 只对y轴进行放大。
zoom(factor) 用放大系数factor进行放大或缩小,而不影响交互式放大的状态。若factor>1,系统将图形放大factor倍,若0 zoom(fig, option) 对指定窗口fig中(不一定为当前窗口)的二维图形进行放大,其中参数option为:on、off、xon、yon、reset、factor等。 7.函数 meshgrid产生平面区域内的网格矩阵,调用格式:x=a:d1:b;y=c:d2:d; [X,Y]=meshgrid(x,y); >>x = [0.7 1.1 ]; y = [-2 3 1]; z = [2 5 3]; %分量不一定从小到大 >>[X_2d,Y_2d] = meshgrid(x,y) >>[X_3d,Y_3d,Z_3d] = meshgrid(x,y,z) 二.特殊二维图形的命令 1 polar polar(theta,rho) 用极角theta和极径rho画出极坐标图形。 polar(theta,rho,LineSpec) 参量LineSpec指定极坐标图中线条的线型、标记符 2 号和颜色等。 >>t = 0:.01:2*pi; >>polar(t,sin(3*t).*cos(2*t),'--r') 2 bar 二维垂直条形图。 x = -2.9:0.2:2.9; bar(x,exp(x.*sin(x))) colormap gray 3 barh 二维水平条形图。 >>X = 1:.5:5; >>Y = exp(X).*sin(X); >>barh(Y,'stack') 4 compass 从原点画箭头图。箭头图为一显示起点为笛卡儿坐标系中的原点的二维或三维方向或向量的图形,同时在坐标系中显示圆形的分隔线。用法 compass(X,Y) 参量x与y为同型的n维向量,则命令显示n个箭头,箭头的起点为原点,箭头的位置为[X(i),Y(i)]。 compass(Z) 参量z为n维复数向量,则命令显示n个箭头,箭头起点为原点,箭头的位置为[real(Z),imag(Z)]. Z = magic(20).*randn(20); compass(Z) 5 comet 二维彗星图。彗星图为彗星头(一个小圆圈)沿着数据点前进的动画,彗星体为跟在彗星头后面的痕迹,轨道为沿着整个函数的实线。 comet(y) 彗星图动画显示向量y确定的路线。 comet(x,y) 彗星图动画显示向量x与y确定的路线。 comet(x,y,p) 指定彗星体的长度p*length(y),缺省的p值为0.1。 >>t = 0:.01:2*pi; >>x = exp(sin(2*t)).*(cos(t).^2/3); >>y = t.*(sin(t).^2); >>comet(x,y); 3 6 errorbar 沿着一曲线画误差棒形图。误差棒为数据的置信水平或沿着曲线的偏差。 errorbar(Y,E) 画出向量y,同时显示在向量y的每一元素之上的误差棒。误差棒为E(i)在曲线y上面与下面的距离,所以误差棒的长度为2*E(i)。 errorbar(X,Y,E) X,Y,E必须为同型参量。若同为向量,则画出带长度为2*E(i)、对称误差棒于曲线点(X(i),Y(i))之处;若同为矩阵,则画出带长度为E(i,j)、对称误差棒于曲面点(X(i,j),Y(i,j))之处, >>X = 0:pi/10:pi; >>Y = exp(X).*sin(X); >>E = std(Y)*ones(size(X)); >>errorbar(X,Y,E) 7 feather 画出速度向量图。一羽毛图在横坐标上等距地显示向量。用户要表示各个向量的、相对于原点的向量分量。 feather(U,V) 显示由参量向量u与v确定的向量,其中u包含作为相对坐标系中的x成分,v包含作为相对坐标系中的y成分。 >>th = (-90:10:90)*pi/180; >>r = 4*ones(size(th)); >>[u,v] = pol2cart(th,r); >>feather(u,v); 8 hist 二维条形直方图,可以显示出数据的分配情形。n = hist(Y) 把向量y中的元素放入等距的10个条形中,返回每一个条形中的元素个数。若y为矩阵,则该命令按列对y进行处理。 n = hist(Y,x) 参量x为向量,把y中元素放到m(m=length(x))个由x中元素指定的位置为中心的条形中。 >>x = -5:0.1:5; >>y = randn(1000,1); >>hist(y,x) 9 histc 直方图记数,n = histc(x,edges) 统计向量x中、落入向量edges(edges元素 4 单调非减的)各个元素之间的元素个数。输出参量n为一与向量edges同维的向量。 10 rose 画角度直方图。该直方图显示所给数据变化范围内数据的分布情形的极坐标图,所给数据分成不同的组。每一组作为一小扇形进行显示。 rose(theta) 画一角度直方图,显示参数theta的数据在20个区间或更少的区间内的分布。向量theta中的角度单位为弧度,用于确定每一区间与原点的角度。每一区间的长度反映出输入参量的元素落入一区间的个数。 rose(theta,x) 用参量x指定每一区间内的元素与区间的位置,length(x)等于每一区间内元素的个数与每一区间位置角度的中间角度。 >>theta = 3*pi*randn(1,30); >>rose(theta) 11 stairs 画二维阶梯图,这种图对与时间有关的数字样本系统的作图很有用处。 stairs(Y) 用参量y的元素画一阶梯图。 stairs(X,Y) 结合x与y画阶梯图。 >>x = 0:.25:10; >>stairs(x,exp(sin(x.^2))) 12 stem 画二维离散数据的柄形图。 stem(Y) 按y元素的顺序画出柄形图,在x轴上,柄与柄之间的距离相等 stem(X,Y) 在横坐标x上画出列向量y的柄形图 。 >>x = linspace(0,2,10); >>stem(exp(-x.^2),'fill','-.') 13 stem3 画三维离散数据的柄形图。该图用一线段显示数据离开xy平面的高度 stem3(Z) 用柄形图显示z中数据与xy平面的高度。 stem3(X,Y,Z) 在参数x与y指定的位置上画出z的元素,其中x,y,z必须为同型的向量或矩阵。 [X,Y,Z] = peaks(20); stem3(X,Y,Z,?r*') 5