1、1第第 4 章章 MATLAB 数据可视化数据可视化4.1概述概述4.2基本二维绘图基本二维绘图4.3基本三维绘图基本三维绘图4.4图形修饰图形修饰(重点)(重点)4.5特殊图形函数特殊图形函数 4.6图形句柄图形句柄4.7保存和输出图形保存和输出图形 24.1 概述概述l 二维曲线的数学表示:二维曲线的数学表示:y=f(x)l 三维曲线的数学表示:三维曲线的数学表示:参数方程形式:参数方程形式:x=f(t);y=g(t);z=h(t);l 三维曲面的数学表示:三维曲面的数学表示:z=f(x,y)34.2 基本二维绘图基本二维绘图1、散乱点绘制散乱点绘制 scatterscatter(xdat
2、a,ydata)例例:x=1 3 5 4 2;y=2 6 5 4 1;scatter(x,y);11.522.533.544.5511.522.533.544.555.5642、连续曲线绘制连续曲线绘制 plotplot(ydata)plot(xdata,ydata)plot(xdata1,ydata1,xdata2,ydata2)plot(matrix)例例:绘制一条曲线:绘制一条曲线y=1 2 3 4 3 2 1;plot(y)%以以y向量各元素的下标作向量各元素的下标作X轴轴123456711.522.533.545x=1 3 4 6 7 8 10;y=1 2 3 4 3 2 1;plo
3、t(x,y)%以以x向量作为向量作为X轴,轴,y向量作为向量作为Y轴绘图轴绘图1234567891011.522.533.546例例:绘制多条曲线:绘制多条曲线(方法方法1)x=0:pi/1000:2*pi;y=sin(2*x+pi/4);plot(x,y,x,y+1,x,y+2);01234567-1-0.500.511.522.537例:绘制多条曲线例:绘制多条曲线(方法方法2)A=pascal(5)A=1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70plot(A)%直接绘制矩阵数据,每一列代表一条曲线直接绘制矩阵数据,每一
4、列代表一条曲线11.522.533.544.5501020304050607083、离散图绘制离散图绘制 stemstem(ydata)stem(xdata,ydata)例例:y=2 3 6 8 4 7;%以以y向量的下标作向量的下标作X轴轴stem(y);11.522.533.544.555.560123456789x=2:7;y=2 3 6 8 4 7;stem(x,y);%以以x向量作向量作X轴,轴,y向量作向量作Y轴绘图轴绘图22.533.544.555.566.57012345678104.3基本三维绘图基本三维绘图1、三维散乱点绘制三维散乱点绘制 scatter3scatter3(
5、xdata,ydata,zdata)例例:x=1 3 5 4 2;y=2 6 5 4 1;z=1 0 2 4 3;scatter3(x,y,z);12345024601234112、连续三维曲线连续三维曲线 plot3plot3(xdata,ydata,zdata)plot3(xdata1,ydata1,zdata1,xdata2,ydata2,zdata2)例例:绘制连续三维曲线:绘制连续三维曲线z=0:.1:40;x=cos(z);y=sin(z);plot3(x,y,z)-1-0.500.51-1-0.500.5101020304012plot3(x,y,z,x,y,z+1)-1-0.5
6、00.51-1-0.500.5101020304050133、离散三维曲线离散三维曲线 stem3stem3(xdata,ydata,zdata)例例:x=1 3 5 4 2;y=2 6 5 4 1;z=1 0 2 4 3;stem3(x,y,z);144、三维曲面绘制三维曲面绘制 二维数据网格的产生二维数据网格的产生 meshgrid X,Y=meshgrid(x,y)将将 x 向量按行复制向量按行复制 length(y)份形成份形成 X 将将 y 向量按列复制向量按列复制 length(x)份形成份形成 Y例例:x=1 3 5 6;y=1 4 7 8 9;X,Y=meshgrid(x,y)
7、X=1 3 5 6 1 3 5 6 1 3 5 6 1 3 5 6 1 3 5 6Y=1 1 1 1 4 4 4 4 7 7 7 7 8 8 8 8 9 9 9 915 三维曲面绘制三维曲面绘制 mesh,meshc,meshz,surf,surfcmesh(xdata,ydata,zdata)例例:X,Y=meshgrid(-3:.125:3);Z=peaks(X,Y);%peaks多峰函数,生成绘多峰函数,生成绘 图数据矩阵图数据矩阵 mesh(X,Y,Z)%绘制三维网格图绘制三维网格图-4-2024-505-10-5051016 meshc(X,Y,Z)%绘制出等高线绘制出等高线-4-2
8、024-505-10-5051017 meshz(X,Y,Z)%绘制出底座绘制出底座(窗帘窗帘)-4-2024-505-10-5051018 surf(X,Y,Z)%绘制三维曲面图,各线条绘制三维曲面图,各线条 之间的补面用颜色填充之间的补面用颜色填充-4-2024-505-10-5051019 surfc(X,Y,Z)%绘制出等高线绘制出等高线-4-2024-505-10-50510204.4图形修饰图形修饰1、曲线颜色曲线颜色,线型线型,时标的设置时标的设置plot(xdata,ydata,color_linestyle_marker)plot(xdata1,ydata1,clm1,xda
9、ta2,ydata2,clm2)v 三种字符可以任意顺序组合三种字符可以任意顺序组合21例例:x=0:pi/10:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,r*-,x,y2,gd-.);01234567-1-0.8-0.6-0.4-0.200.20.40.60.8122如果未指定线型,则只画出离散点如果未指定线型,则只画出离散点plot(x,y1,r*,x,y2,gd);01234567-1-0.8-0.6-0.4-0.200.20.40.60.81232、曲线的标注曲线的标注title(string):添加标题添加标题xlabel(string):添加添加X轴标签
10、轴标签ylabel(string):添加添加Y轴标签轴标签text(x,y,string):添加文本注释添加文本注释gtext(string):交互式添加文本注释交互式添加文本注释legend(string1,string2,):添加图例添加图例24例例:x=0:pi/10:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,r*-.,x,y2,gd-);title(正弦和余弦函数曲线正弦和余弦函数曲线);xlabel(X轴数据轴数据);ylabel(Y轴数据轴数据);text(pi,0.5,MATLAB绘图绘图);legend(正弦正弦,余弦余弦);25 gtext(交互式
11、注解交互式注解)26最终效果图:最终效果图:273、坐标网格线坐标网格线grid ongrid off例例:x=0:pi/10:2*pi;y=sin(x);plot(x,y);grid on;01234567-1-0.8-0.6-0.4-0.200.20.40.60.81284、图形保持图形保持hold on hold off例例:x=0:pi/10:2*pi;y1=sin(x);plot(x,y1);hold on;y2=cos(x);plot(x,y2);01234567-1-0.8-0.6-0.4-0.200.20.40.60.81v 这也是一种在同一窗口绘制多条曲线的方法这也是一种在同
12、一窗口绘制多条曲线的方法295、子图子图subplot(m,n,p):将绘图区域分成将绘图区域分成 m 行行 n 列,当列,当前子图为第前子图为第 p 个区域个区域(从上到下、从左到右从上到下、从左到右)。x=0.1:pi/10:2*pi;y1=sin(x);y2=cos(x);y3=exp(x);y4=log(x);subplot(2,2,1);plot(x,y1);subplot(2,2,2);plot(x,y2);subplot(2,2,3);plot(x,y3);subplot(2,2,4);plot(x,y4);02468-1-0.500.5102468-1-0.500.510246
13、8010020030040050002468-3-2-101230u不规则子图分割不规则子图分割x=0.1:pi/10:2*pi;y1=sin(x);y2=cos(x);y3=exp(x);subplot(2 2 1);plot(x,y1);subplot(2,2,2);plot(x,y2);subplot(2,1,2);plot(x,y3);02468-1-0.500.5102468-1-0.500.5101234567010020030040050031u方法二:方法二:subplot(2,2,1)plot(rand(1,10);subplot(2,2,2)plot(rand(1,10);
14、subplot(2,2,3 4);plot(rand(1,10);051000.20.40.60.81051000.20.40.60.811234567891000.20.40.60.81326、坐标轴控制坐标轴控制 axis(xmin,xmax,ymin,ymax)x=0.1:pi/100:2*pi;y=sin(x);plot(x,y);axis(0 pi 0.5 1)00.511.522.530.50.550.60.650.70.750.80.850.90.951337、三维图形的高级修饰三维图形的高级修饰设置调色板、投影方式、光照、材质、视角设置调色板、投影方式、光照、材质、视角例例:c
15、lear;clc;Z=peaks(20);surf(Z);xlabel(x);ylabel(y);zlabel(z);34%*设置调色板设置调色板*%colormap hot;%hot 黑、红、黄、白浓淡色黑、红、黄、白浓淡色%colormap hsv;%hsv 两端为红的饱和值色两端为红的饱和值色colormap spring;%spring 青、黄浓淡色青、黄浓淡色%*设置着色方式设置着色方式*%shading interp;%在网格片内采用颜色插值处理,得在网格片内采用颜色插值处理,得 出的表面图显得最光滑出的表面图显得最光滑%shading flat;%将每个网格片用同一个颜色进行着将
16、每个网格片用同一个颜色进行着 色,且网格线也用相应的颜色,从色,且网格线也用相应的颜色,从 而使得图形表面显得更加光滑而使得图形表面显得更加光滑shading faceted%将每个网格片用其高度对应的颜色将每个网格片用其高度对应的颜色 进行着色,但网格线仍保留着,其进行着色,但网格线仍保留着,其 颜色是黑色。缺省着色方式。颜色是黑色。缺省着色方式。35%*设置光照设置光照*%light(position,0,0,30);light(position,10,10,-10);%*设置材质设置材质*%material DULL;%使对象较暗淡使对象较暗淡%material METAL%使对象带金属
17、光泽使对象带金属光泽%material SHINY%使对象较明亮使对象较明亮%*设置视角设置视角*%view(-37.5,30);%默认默认%view(0,90);%俯视俯视(缺省视点定义为缺省视点定义为 方位角、仰角方位角、仰角)364.5 特殊图形函数特殊图形函数1、特殊坐标系特殊坐标系plotyy:用左右两个:用左右两个 Y 轴绘制两条曲线轴绘制两条曲线 loglog:两个坐标轴都是用对数坐标:两个坐标轴都是用对数坐标semilogx:X 轴用对数坐标,轴用对数坐标,Y 轴用线性坐标轴用线性坐标semilogy:Y 轴用对数坐标,轴用对数坐标,X 轴用线性坐标轴用线性坐标37例例:cle
18、ar;clc;data=1:1000;subplot(221);loglog(data);grid on;title(loglog);subplot(222);semilogy(data);grid on;title(semilogy);subplot(223);semilogx(data);grid on;title(semilogx);subplot(224);plotyy(data,data,data,data.2);grid on;title(plotyy);38100102104100101102103loglog05001000100101102103semilogy1001021
19、0402004006008001000semilogx0500100002004006008001000plotyy050010000246810 x 105392、特殊绘图函数特殊绘图函数 条状图条状图bar(x,y):二维条状图二维条状图barh(x,y):二维水平条状图二维水平条状图bar3(x,y):三维条状图三维条状图bar3h(x,y):三维水平条状图三维水平条状图bar(A):将将 m 行行 n 列矩阵列矩阵 A 绘制成绘制成 m 组,每组,每组组 n 个个 bar.40例例:clear;clc;a=1 2 4 8 9 5 2;subplot(221);bar(a);title(
20、bar);subplot(222);barh(a);title(barh);subplot(223);bar3(a);title(bar3);subplot(224);bar3h(a);title(bar3h);12345670246810bar05101234567barh12345670510bar305101234567bar3h41例例:clear;clc;A=10 2 3 5;5 8 10 3;9 7 6 1;3 5 7 2;4 7 5 3;subplot(221);bar(A);title(bar);subplot(222);barh(A);title(barh);subplot(
21、223);bar3(A);title(bar3);subplot(224);bar3h(A);title(bar3h);123450246810bar051012345barh1234123450510bar3051012345bar3h42 饼图饼图显示向量中各元素所占的百分比显示向量中各元素所占的百分比pie(x):二维饼图二维饼图pie3(x):三维饼图:三维饼图例例:x=0.18 0.22 0.35 0.1 0.15;y=0.18 0.22 0.35 0.1;subplot(221)pie(x);title(完整饼图完整饼图2D);subplot(222)pie3(x);title(完
22、整饼图完整饼图3D);subplot(223)pie(y);title(缺角饼图缺角饼图2D);subplot(224)pie3(y);title(缺角饼图缺角饼图3D);43 直方图(统计直方图)直方图(统计直方图)hist(a):对:对 a 中各元素统计其数值位于某区间中各元素统计其数值位于某区间 内的元素个数,默认为内的元素个数,默认为 10 个区间个区间例例:a=randn(1,100000);b=rand(1,100000);subplot(121);hist(a);subplot(122);hist(b);-50500.511.522.533.5x 10400.5102000400
23、0600080001000012000444.6图形句柄图形句柄1、MATLAB 中图形对象的种类中图形对象的种类根对象根对象 root:计算机显示屏:计算机显示屏图形窗口对象图形窗口对象 figure用户控件对象用户控件对象 uicontrol:包括按钮、列表框、包括按钮、列表框、滚动条滚动条.用户菜单对象用户菜单对象 uimenu坐标轴对象坐标轴对象 axes图像对象图像对象 image灯光对象灯光对象 light线条对象线条对象 line面片对象面片对象 patch矩形对象矩形对象 rectangle曲面对象曲面对象 surface文本对象文本对象 text45根对象UI菜单图形窗体UI
24、控件坐标轴表面线条文本46 在在 MATLAB 中,每一个图形对象都有一个独中,每一个图形对象都有一个独一无二的标示,称为图形对象的句柄一无二的标示,称为图形对象的句柄(Handle)。每个图形对象都有其属性。每个图形对象都有其属性。使用句柄来创建图形对象是各个绘图函数使用句柄来创建图形对象是各个绘图函数(如(如 plot,mesh)的底层操作,绘图的实质是的底层操作,绘图的实质是创建一个个具有不同属性的图形对象的过程。创建一个个具有不同属性的图形对象的过程。几个常用的获取句柄的函数几个常用的获取句柄的函数gcf:获取当前获取当前 figure 句柄句柄gca:获取当前获取当前 axis 句柄
25、句柄gco:获取当前对象句柄获取当前对象句柄472、绘图的过程:创建图形对象,设置图形对象属、绘图的过程:创建图形对象,设置图形对象属性性创建对象:创建对象:返回句柄返回句柄=对象创建函数名对象创建函数名(属性名属性名,属性,属性值值)设置属性值设置属性值set(句柄,属性名句柄,属性名1,属性值,属性值1,属性名,属性名2,属性,属性值值2,)查询属性值查询属性值V=get(句柄,属性名句柄,属性名)若调用若调用 get 函数时省略属性名,则返回句柄所函数时省略属性名,则返回句柄所有的属性值。有的属性值。483、对象常用的对象常用的公共属性公共属性:Children 属性、属性、Parent
26、 属性、属性、Tag 属性、属性、Type 属属性、性、UserData 属性、属性、Visible 属性、属性、ButtonDown Fcn 属性、属性、CreateFcn 属性、属性、DeleteFcn 属性。属性。Figure 对象的常用属性:对象的常用属性:MenuBar 属性、属性、Name 属性、属性、NumberTitle 属性、属性、Resize 属性、属性、Position 属性、属性、Units 属性、属性、Color 属属性、性、Pointer 属性、属性、KeyPressFcn(键盘键按下响应键盘键按下响应)、WindowButtonDownFcn(鼠标键按下响应鼠标键
27、按下响应)、WindowButtonMotionFcn(鼠标移动响应鼠标移动响应)、WindowButtonUpFcn(鼠标键释放响应鼠标键释放响应)。49axes 对象的常用属性:对象的常用属性:Box 属性、属性、GridLineStyle 属性、属性、Position 属性、属性、Units 属性、属性、Title 属性等。属性等。line 对象的常用属性:对象的常用属性:Color 属性、属性、LineStyle 属性、属性、LineWidth 属性、属性、Marker 属性、属性、MarkerSize属性属性等。等。text 对象的常用属性:对象的常用属性:Color 属性、属性、S
28、tring 属性、属性、Interpreter 属性、属性、FontSize 属性、属性、Rotation 属性。属性。surface 对象的常用属性:对象的常用属性:EdgeColor 属性、属性、FaceColor 属性、属性、LineStyle 属性、属性、LineWidth 属性、属性、Marker 属性、属性、MarkerSize 属性等。属性等。50例例:clear;clc;h=line;%创建创建 line 对象对象set(h,xdata,1:10,ydata,rand(1,10);%设置属性设置属性set(h,linestyle,-);%设置属性设置属性set(h,linewi
29、dth,2);%设置属性设置属性set(h,marker,*);%设置属性设置属性set(h,markersize,8);%设置属性设置属性1234567891000.10.20.30.40.50.60.70.80.9151例例:利用图形句柄制作动画:利用图形句柄制作动画clear;clc;x=-5:0.1:5;y=sin(x);h1=plot(x,y);%创建图形对象创建图形对象set(h1,linewidth,5);set(h1,color,r);hold on;set(gcf,DoubleBuffer,on);%消除震动消除震动index=1:length(x),length(x):-1
30、:1;for i=index;h2=scatter(x(i),y(i);set(h2,linewidth,10);pause(0.02);set(h2,visible,off);end52动画效果:一个沿正弦曲线运动的小球动画效果:一个沿正弦曲线运动的小球p 经常不断地学习,你就什么都知道。你知道得越多,你就越有力量p Study Constantly,And You Will Know Everything.The More You Know,The More Powerful You Will Be写在最后Thank You在别人的演说中思考,在自己的故事里成长Thinking In Other PeopleS Speeches,Growing Up In Your Own Story讲师:XXXXXX XX年XX月XX日