第3章MATLAB绘图二维绘图格式化绘图特殊图形函数三维绘图数据可视化是MATLAB的强大功能之一,数据可视化不仅仅是二维的,还可以在三维空间展示数据,而数据或者图形的可视化也是进行数据处理或者图形图像处理的第一步骤。MATLAB绘图都是在MATLAB图形窗体中进行的,而所有图形数据可视化的工作也都以图形窗体为主。MATLAB图形窗体如图1所示。MATLAB的图形窗体主要包括如下几个部分:*菜单栏:完成对窗体中各种对象的基本操作。*工具条:用来完成对图形对象的一般性操作。*绘图区域:是图形窗体面积最大的部分,区域中可以绘制各种曲线,显示图形图像文件,以及对图形图像或曲线的编辑。数据可视化的步骤:*准备绘图数据。*创建图形窗体。*使用绘图函数绘制图形或者曲线。*设置图形属性例1MATLAB基本绘图指令的使用。在MATLAB命令行窗口中键入下面的指令:x=0:pi/1000:2*pi;y=sin(2*x+pi/4);plot(x,y)3.1基本二维绘图3.1.1基本绘图指令数据可视化使用最多的函数就是plot函数,不仅能绘制一条曲线,还可绘制多条曲线。其基本语法格式为:绘制一条曲线:plot(xdata,ydata,'color_linestyle_marker')绘制多条曲线:plot(xdata1,ydata1,'clm1',xdata2,ydata2,'clm2',...)例1MATLAB基本绘图指令的使用。在MATLAB命令行窗口中键入下面的指令:x=0:pi/1000:2*pi;y=sin(2*x+pi/4);plot(x,y)-1-0.8-0.6-0.4-0.200.20.40.60.8101234567(继续前面的指令)plot(x,y,x,y+1,x,y+2)图形窗体中由下至上分别为绘制的第一、二、三条曲线,根据系统默认设置分别为蓝色、绿色和红色。例1说明了plot函数的基本用法和系统默认设置。不过例子中使用的数据是两个向量,分别作为X轴的数据和Y轴的数据。MATLAB是如何处理的呢?利用plot函数直接绘制矩阵数据,plot函数将矩阵每一列数据绘制在窗体中,如例2所示。例2利用plot函数绘制矩阵数据。在MATLAB命令行窗口中,键入下面的指令:A=pascal(5)A=111111234513610151410203515153570plot(A)图4绘制矩阵的数据11.522.533.544.55010203040506070第五列数据第一列数据3.1.2设置曲线的样式属性为了能够在plot函数中控制曲线样式,MATLAB预先设置了不同的曲线样式属性值,分别控制曲线的色彩、线型和标识符。线型意义数据点标记意义颜色意义-实线+加号r红色--虚线o圆圈g绿色-.点划线*星号b蓝色:虚点线x叉号c蓝绿色.点m洋红色s方格y黄色d菱形k黑色w白色例3设置曲线的样式。在MATLAB命令行窗口中,键入下面的指令:t=0:pi/20:2*pi;y=sin(t);y2=sin(t-pi/2);y3=sin(t-pi);plot(t,y,'-.rv',t,y2,'--ks',t,y3,':mp')-1-0.8-0.6-0.4-0.200.20.40.60.8101234567为了能够直观地观察数据曲线,使用grid命令将轴的坐标线绘制出来,命令为gridon。图6就是将例3的结果添加上坐标网格线之后的效果。7-1-0.8-0.6-0.4-0.200.20.40.60.810123456若不希望出现坐标网格线,则执行gridoff命令。若向已有曲线的图形窗体中增加曲线,则使用holdon命令锁定当前的图形窗体。holdoff命令解除锁定状态。清除当前图形窗体内容的指令为clf。创建新的图形窗体的指令为figure。若不希望将绘制的曲线点连接起来,则在使用plot函数绘制曲线的时候不要指定线条的样式,仅指定时标选项和色彩选项。例如接例3执行下面的指令:plot(t,y,'rv',t,y2,'ks',t,y3,'mp')gridon0-1-0.8-0.6-0.4-0.20.20.40.60.8101234567MATLAB对曲线进行更细致的控制需要通过设置曲线属性来完成。下面是曲线细节的部分属性设置:*LineWidth:曲线的宽度,单位为point。*MarkerEdgeColor:曲线时标边缘的色彩。*MarkerFaceColor:填充曲线时标的色彩。*MarkerSize:曲线时标的大小,单位为point。例4设置曲线的细节属性。在命令行窗口中,键入下面的指令:x=-pi:pi/10:pi;y=tan(sin(x))-sin(tan(x));plot(x,y,'--rs',...'LineWidth',2,'MarkerEdgeColor','k',...'MarkerFaceColor','g','MarkerSize',10)-4-3-2-101234-3-2-10123图形窗体中还可以划分为多个显示区域。使用subplot函数选择绘制区域。subplot函数把图形窗体分割成指定行数和列数的区域,在每个区域内都可以包含一个绘图轴,利用该函数选择不同的绘图区,然后所有的绘图操作都将结果输出到指定的绘图区中。subplot函数的基本用法如下:subplot(m,n,p)其中m和n为分割的行数和列数,p为选定窗体区域序号,以行元素优先顺序排列。例如,在命令行窗口中键入指令:subplot(2,3,4)将图形窗体分割成为二行三列,第四个区域为当前绘图区域。例5说明了子图的使用方法。例5使用子图x=0:.1:2*pi;%创建新的图形窗体figure(1);clf;%分隔窗体为2行2列,分别在不同的区域绘图subplot(2,2,1);plot(1:10);gridon;subplot(2,2,2);plot(x,sin(x));gridon;subplot(2,2,3);plot(x,exp(-x),'r');gridon;subplot(2,2,4);plot(peaks);gridon;%创建新的图形窗体figure(2);clf%图形窗体分割为4行5列,选择第2~4号区域subplot(4,5,2:4);plot(1:10);gridon;%选择向量中指定的区域subplot(4,5,[789121314]);plot(peaks);gridon;%选择单一的区域subplot(4,5,11);plot(membrane);gridon;%选择多个区域subplot(4,5,16:20);surf(membrane);gridon;注意在例5中,选择多个绘图区域时subplot函数的格式。在命令行窗口中,键入下面的指令:subplotex则MATLAB创建两个图形窗体,分别绘制分割的图形,如图所示。0510024681002468-1-0.500.510246800.20.40.60.810204060-10-505100246810051001020304050-10-5051002040-101010203040010203040-101MATLAB使用axis函数调整轴的显示范围,axis函数可修改图形窗体轴的范围,基本格式如下:axis([xminxmaxyminymax])其中xmin和xmax决定X轴范围,ymin和ymax决定Y轴范围。例6axis函数使用示例。在命令行窗口中,键入下面的指令:x=0:pi/100:pi/2;y=tan(x);plot(x,y,'ko')gridon024681012141618x101500.20.40.60.811.21.41.6由于默认图形窗体轴根据数据范围自动调节图形显示比例,所以显示结果并不直观,绘制数据几乎排成了一条直线,所以需要修改显示范围。axis([0,pi/2,0,5])将轴的范围缩小,前面数据细节就可以查看出来,如图所示。00.511.522.533.544.5500.511.5MATLAB默认按照绘制数据的范围设置坐标线间隔,间隔设置是自动完成的,用户可根据需要设置间隔,具体方法是通过设置轴的XTick或者YTick属性实现对X轴或Y轴坐标间隔设置。例7设置轴的坐标间隔。在MATLAB命令行窗口中,键入下面的指令:x=-pi:pi/10:pi;y=cos(x);plot(x,y,'-r^');gridon-4-3-2-101234-1-0.8-0.6-0.4-0.200.20.40.60.81默认的X轴间隔修改轴坐标间隔属性,使用set函数修改指定对象的XTick或者YTick属性值。修改X轴的范围和坐标间隔:axis([-pi,pi,-inf,inf])set(gca,'XTick',-pi:pi/4:pi)-3.1416-2.3562-1.5708-0.785400.78541.57082.35623.1416-1-0.8-0.6-0.4-0.200.20.40.60.81自定义X轴间隔set函数和get函数是用来设置/获取图形对象属性的常函数。继续例7,在命令行窗口中键入下面指令:label={‘-pi','',‘pi/2','','0','','pi/2','','pi'}set(gca,'XTickLabel',label)-1-0.8-0.6-0.4-0.200.20.40.60.81-pi-pi/20pi/2pi自定义X轴标注例8利用图形编辑模式编辑轴对象属性。使用例7的指令绘制基本图形,进入图形编辑模式,用鼠标单击轴,这时图形窗口如图所示。MATLAB可利用图形窗工具对图形进行编辑。在编辑模式下向图形对象添加文本、箭头、直线等。完成工作后,只要单击按钮就可以回到正常显示模式。图形编辑模式下的工作是设置各种图形对象的属性,这里以设置轴对象的属性为例来说明这一过程。可利用不同方式打开轴对象的属性编辑器:*执行“Edit”的“AxesProperties”命令。*执行鼠标右键快捷菜单的“Properties”命令。*在命令行窗口中键入指令propedit,在弹出的图形属性对话框中选择轴对象。在轴属性编辑器中,可以设置X、Y和Z轴的属性,以及绘图的其他属性。将X轴的属性设置成例7的数值,包括Limit、Tick和Labels。-pi-pi/20pi/2pi-1-0.8-0.6-0.4-0.200.20.40.60.813.2格式化绘图3.2.1增加文本信息图形窗文本信息包括图形标题、文本注释、轴标签和图例等。通过图形编辑器,配合不同对象的属性编辑器也可以完成添加格式化文本信息的工作。1.添加标题(title)添加图形的标题需要使用title函数,函数基本用法为title('string')其中string为图形标题,标题自动设置在轴正中顶部,在命令行窗口中键入下面指令:title(date)则MATLAB会创建包含一个空白轴的图形窗体,同时将轴的标题设置为当前的日期。图例默认绘制在轴的右上角处,包括绘制曲线的色彩、样式和时标,添加简要说明。其基本语法为legend('string1','string2'......)其中string1、string2为图例说明性文本,自动按照绘制次序选择相应文本作为图例。接例3在命令行窗口键入下面指令:legend('y=sin(t)','y=sin(t-pi/2)','y=sin(t-pi)')2.添加图例(legend)y=sin(t)y=sin(t-pi/2)y=sin(t-pi)-1-0.8-0.6-0.4-0.200.20.40.60.8101234567图例坐标轴标签用来说明与轴有关的信息。使用xlabel、ylabel和zlabel函数分别为X轴、Y轴和Z轴添加轴标签。以X轴为例,基本语法如下:xlabel('string')其中string就是坐标轴标签。坐标轴标签自动与坐标轴居中对齐。3.添加轴标签(label)例如在图形窗体中为X轴和Y轴添加标签:plot(sin(