第04讲数据和函数的可视化数据和函数的可视化主要内容1、图形绘制的一般步骤2、二维图形的绘制3、坐标、分格线和坐标框控制4、图形标注5、其他绘图技巧6、三维图形的绘制7、特殊图形的绘制4.1图形绘制的一般步骤二维图形:产生自变量采样向量t=pi*(0:100)/100;计算相应的函数值向量x=f1(t);y=f2(t)1)数据准备三维图形:产生自变量采样向量x=x1:dx:x2y=y1:dx:y2产生自变量格点矩阵[X,Y]=meshgrid(x,y)计算自变量格点矩阵相应的函数值矩阵Z=f(X,Y)2)选定图形窗及子图位置;缺省时,打开figure1,或当前窗,当前子图可用指令指定图形窗口和子图号.figure(1)%指定1号图形窗subplot(2,2,3)%指定3号子图4.1图形绘制的一般步骤3)调用绘图指令:线型、色彩、数据点形二维图形:plot(x,y,’r:’)%用红虚点画二维曲线三维图形:plot3(x,y,z,’b-’)%用蓝色实线画三维曲线4)设置轴的范围、坐标分格线axis([x1,x2,y1,y2])%平面坐标范围axis([x1,x2,y1,y2,z1,z2])%三维坐标范围gridon%坐标分格线4.1图形绘制的一般步骤5)图形注释:图名、坐标名、图例、文字说明title(‘调制波形’)%图名xlabel(‘t’)ylabel(‘y’)%轴名legend(‘sin(t)’,’sin(t)sin(9t)’)%图例text(2,0.5,’y=sin(t)sin(9t)’)%文字说明6)着色、明暗、灯光、材质处理(仅适用于三维图形)colormapshadinglightmaterial7)视点、三度比8)图形的精细修饰9)图形的打印图形可视化的一般步骤(小结)1)数据准备2)选定图形窗及子图位置;3)调用绘图指令:线型、色彩、数据点形4)设置轴的范围、坐标分格线5)图形注释:图名、坐标名、图例、文字说明6)着色、明暗、灯光、材质处理(仅适用于三维图形)7)视点、三度比8)图形的精细修饰9)图形的打印4.2二维曲线的绘制用MATLAB提供的图形系统进行二维曲线绘制是最简单的图形操作,按以下的步骤进行:1)生成x轴和y轴的数据例如:x=0:100;y=sqrt(x);其中:x和y都是向量2)打开一个新的图形窗口(只画1幅图时,可略)例如:figure(1);4.2二维曲线的绘制3)绘制曲线plot()A.plot(x,‘s’)(1)x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线。(2)x为实矩阵时,则按列绘制每列元素值相对其下标的曲线,绘制的曲线数等于x矩阵的列数。(3)x为复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。说明:s是用来指定线型、色彩、数据点型的选项字符串4.2二维曲线的绘制B.plot(x,y,‘s’)(1)x,y是同维向量时,绘制以x元素为横坐标、y元素为纵坐标的曲线。(2)x是向量,y是有一维与x等维的矩阵时,则绘制出多根不同色彩的曲线,曲线数等于y阵的另一维数,x被作为这些曲线共同的横坐标。(3)x是矩阵,y是向量,情况与上相同,只是曲线都以y为共同坐标。(4)x,y为同维矩阵时,则以x,y对应列元素为横纵坐标分别绘制曲线,曲线的条数等于矩阵的列数。C.plot(x1,y1,‘s1’,x2,y2,’s2’,……);例题开讲t=(0:pi/50:2*pi)';k=0.4:0.1:1;Y=cos(t)*k;plot(t,Y)plot(t)plot(y)plot(y,t)问题:例题开讲例.用图形表示连续调制波形y=sin(t)sin(9t)及其包络线t=(0:pi/100:pi)';y1=sin(t)*[1,-1];%包络线函数值,是(101x2)的矩阵y2=sin(t).*sin(9*t);t3=pi*(0:9)/9;y3=sin(t3).*sin(9*t3);plot(t,y1,'r:',t,y2,'b',t3,y3,'bo')4.3坐标、分格线和坐标框控制4.3.1坐标轴控制axisaxis([x1min,x2max,y1min,y2max]);功能:设置轴的极限范围,在实际应用中,我们可以通过这条指令来清晰的显示出图中的局部信息。4.3坐标、分格线和坐标框控制axisonaxisoff功能:使用轴背景、取消轴背景axisequal纵横坐标采用等长刻度axisnormal产生矩形坐标系(缺省时)axissquare产生正方形坐标系4.3坐标、分格线和坐标框控制4.3.2分格线和坐标框1.分格线gridon画出分格线gridoff不划分格线2.坐标框boxon使当前坐标成封闭形式boxoff使当前坐标成开启形式说明:缺省设置,不画分格线、坐标成封闭形式4.4图形标注1.标注标题和坐标轴标题:title(s);坐标轴:xlabel(s);ylabel(s);其中字符串s即可是英文也可是中文举例在[0,2pi]之间绘制正弦曲线alpha=linspace(0,2*pi,100);y=sin(alpha);plot(alpha,y)gridontitle('sin(\alpha)')xlabel('\alpha')ylabel('y')titlexlablelylabel4.4图形标注2.曲线的标注当一幅图中绘制两条以上的曲线时,常常需要对各自曲线所代表的含义进行标注。legend(s1,s2,…)text(xt,yt,s)绘制曲线所用的线型、色彩或数据点型图例在图面(xt,yt)处书写字符注释举例在同一张图中绘制[0,pi]之间的正弦函数和22y)sin(yalpha=linspace(0,pi,100);y1=sin(alpha);y2=alpha.^2-2;plot(alpha,y1,alpha,y2)gridonxlabel('\alpha')ylabel('y')legend('y=sin(\alpha)','y=\alpha^2-2')text(pi/2,0,'sin(\alpha)')text(2,2,'\leftarrow\alpha^2-2')4.5其它绘图技巧plot函数具有在同一次调用中画多条曲线的功能。然而,在实际应用中,还会遇到在已经存在的图上再绘制一条或多条曲线的情况。4.5.1多次叠绘holdon使当前轴及图形保持而不被刷新,准备接受此后将绘制的新曲线。holdoff使当前轴及图形不再具备不被刷新的性质。举例在已有的y=sinx的图形窗口中绘制y=cosx的图形x=linspace(0,2*pi,100);y=sin(x);plot(x,y,'m-');holdony=cos(x);plot(x,y,'b:');gridon4.5其它绘图技巧4.5.2多子图绘制MATLAB允许用户在同一图形窗里布置几幅独立的子图。subplot(m,n,k)使(m×n)幅子图中的第k幅成为当前图举例x=0:1/3000:1;y=cos(tan(pi*x));subplot(2,1,1)plot(x,y)subplot(2,1,2)plot(x,y)axis([0.4,0.6,-1,1]);4.5其它绘图技巧4.5.3双纵坐标图Matlab提供如下的指令,可以把同一自变量的两个不同量纲、不同数量级的函数量的变化绘制在同一张图上。plotyy(x1,y1,x2,y2)以左右不同纵轴绘制x1-y1、x2-y2两条曲线举例x=0:0.1*pi:2*pi;y=sin(x);z=exp(x);plotyy(x,y,x,z)4.5其他绘图技巧4.5.4对数和极坐标图形绘制2.极坐标系曲线的绘制polar(c1,c2);c1:表示相角,c2:表示幅值。1、对数坐标系曲线的绘制semilogx(x,y)(x轴是对数坐标,y轴不是)semilogy(x,y)(x轴不是对数坐标,y轴是)loglog(x,y)(x轴,y轴都是对数坐标)绘制的极坐标图。)2cos()2sin(theta=0:0.01:2*pi;ro=sin(2*theta).*cos(2*theta);Polar(theta,ro,'k')4.6三维图形的绘制1、三维曲线绘图指令plot3plot3(X,Y,Z,’s’)plot3(X1,Y1,Z1,’s1’,X2,Y2,Z2,’s2’,…)(1)X,Y,Z是同维向量,绘制以X,Y,Z元素为x,y,z坐标的三维曲线(2)X,Y,Z是同维矩阵,则以X,Y,Z对应列元素为x,y,z坐标分别绘制曲线,曲线的条数等于矩阵的列数。t=(0:0.02:2)*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,'b-',x,y,z,'rd'),view([-82,58]),boxon,legend('链','宝石')例题开讲4.6三维图形的绘制2、三维网线图和曲面图mesh(X,Y,Z)mesh(X,Y,Z,C)最常用的网线图调用格式最完整的调用格式,画由C指定用色的网线图最常用的曲面图调用格式最完整的调用格式,画由C指定用色的曲面图surf(X,Y,Z)surf(X,Y,Z,C)例题开讲x=-4:4;y=x;[X,Y]=meshgrid(x,y);%生成x-y坐标格点矩阵Z=X.^2+Y.^2;%计算格点上的函数值figure(1)mesh(X,Y,Z);figure(2)surf(X,Y,Z);holdoncolormap(hot)stem3(X,Y,Z,'bo')%用来表现在格点上计算函数值4.6三维图形的绘制3、透视、镂空和裁切hiddenoffhiddenon透视被叠压的图形消隐被叠压的图形[X0,Y0,Z0]=sphere(30);%产生单位球面的三维坐标X=2*X0;Y=2*Y0;Z=2*Z0;%产生半径为2的球面的三维坐标surf(X0,Y0,Z0);%画单位球面%shadinginterp%采用插补明暗处理holdon,mesh(X,Y,Z),colormap(hot),holdoff%采用hot色图hiddenoff%产生透视效果axisequal,axisoff在三维空间上绘制一个球体4.6三维图形的绘制4、三维图形的精细控制色图colormap()shadingoptions图形对象着色的浓淡处理Z=peaks(15);colormap(jet)subplot(1,3,1),surf(Z),shadingfacetedsubplot(1,3,2),surf(Z),shadingflatsubplot(1,3,3),surf(Z),shadinginterp4.6三维图形的绘制4、三维图形的精细控制alpha(v)对图形对象的透明度加以控制,v取0~1之间的数值0表示完全不透明1表示完全透明clear,clfsurf(peaks)shadinginterpalpha(0.5)colormap(summer)4.7特殊图形的绘制1、条形图的绘制所谓的条形图是指用条形块来表示数据的大小bar(y,’group’)分组绘制条形图,即y的每一行为一组,分别按照不同的颜色绘制出条形图,数值的不同表现为条形的高低。4.7特殊图形的绘制bar(y,’stack’)将每组中的值分段以不同的颜色绘制出条形图,即每一行中的值一个接一个绘制在同一个条形块中,数值的不同表现为不同的厚度。bar(y,’width’)可利用width来指定条形块的相对宽度,缺省时为0.84.7特殊图形的绘制barh(y,’group’)barh(y,’stack’)与bar()函数类似,它在绘制条形图时,是按水平方向来进行的。例题开讲Y=round(rand(5,3)*10);subplot(2,2,1),bar(Y,'group'),title('group');subplot(2,2,2),bar(Y,'stack'),title('stack');subplot(2,2,3),barh(Y,'stack'