470 likes | 726 Views
Matlab 绘图. MCM. 2012.10.29. 主要内容:. 1. 2. 3. 4. 5. 6. 引出:. 观察这组数据( 500 个),看看有什么规律?. 描点看规律??. 应用 MATLAB 对 500 组数据作出统计规律图. 可以看出这是一组正态分布的数据。都有哪些手段可以让数据的规律或性质更直接的展示出来呢?. 一、 Matlab 绘图问题. 二维图形. 散点、折线、一般曲线、极坐 标、柱状统计图、饼图、等高 线、向量图、图形修饰等等。. One. 三维图形. 曲线、曲面、柱面、散点、 饼图等等. Two.
E N D
Matlab 绘图 MCM 2012.10.29 Edit by niuben
主要内容: 1 2 3 4 5 6
引出: • 观察这组数据(500个),看看有什么规律?
应用MATLAB对500组数据作出统计规律图 可以看出这是一组正态分布的数据。都有哪些手段可以让数据的规律或性质更直接的展示出来呢?
一、Matlab绘图问题 二维图形 散点、折线、一般曲线、极坐 标、柱状统计图、饼图、等高 线、向量图、图形修饰等等。 One 三维图形 曲线、曲面、柱面、散点、 饼图等等 Two
(一)、二维图形 • 数据准备*(必要步骤) • 设置绘图区 • 绘图* • 设置曲线和记点格式 • 设置坐标轴和网格线属性 • 标注图形 • 保存和导出图形 Matlab 二维绘图的基本流程
二维图形 画线函数:line 核心绘图函数:plot 极坐标绘图:polar 基本绘图函数
1.line函数绘图*(了解,下同) %…………………… x=0:0.4*pi:2*pi; y=sin(x); line(x,y) %…………………… %line(x,y)将(x(i),y(i)) %代表的点用线段依次连起 %本书部分例题选自《精通Matlab7》
2.plot函数绘图语法 plot函数是Matlab中最核心的二维绘图 函数,它有多种语法格式,可以实现 很多功能。 例如:plot(y);plot(x,y)(y可 以是多维数组);plot(x1,y1,x2, y2……)等等。
例:plot函数绘图 %…………………… x=0:0.4*pi:2*pi; y1=sin(x); y2=cos(x); y3=sin(x-0.1*pi); y4=cos(x+0.1*pi); plot(y1) %1 plot(x,y1) %2 plot(x,[y1;y2;y3;y4]) %3 plot(x,y1,x,y2,x,y3,x,y4) %4 %……………………
例. plot 绘图的用处 观察sin(1/x)在区间【0.01,1】上的零点个数。( sin(1/x)=0的根) • x=0.001:.01:1; • y=sin(1./x); • plot(x,y);axis([0 1 -.3 .3]);
3.例:极坐标绘图* 思考:此处2*pi 若改为pi 或0.5*pi 或0.25pi,结果如何? polar函数格式:polar(theta,rho) 例: %…………………… theta=0:0.05*pi:2*pi; r1=sin(theta); r2=cos(theta); polar([theta' theta'],[r1' r2']) %……………………
4.曲线格式和标记点格式 曲线线形 颜色 • 实线 r 红色 y黄色 • . 点划线 g绿色 c蓝绿色 • -- 虚线 b蓝色 m洋红色 • : 点线 k黑色 w白色 标记点格式 +、 o、 *、 .、X、 s(方格) 、d(菱形)、 ^(上三角)、 v(下三角)、 <(左三角 )、>(右三角)、 p(五边形)、 h(六边形)。
例:plot函数绘图续 (线型、颜色) --dc(虚线菱形蓝绿) 仅描点 %…………………… x=0:0.1*pi:2*pi; y3=sin(x).*cos(3*x); y1=sin(x); y2=cos(3*x); plot(x,y1,'ob',x,y2,'--dc',x,y3,':vr') %第一组数据只标记数据点 %…………………… :vr(点、下三角红色)
5.曲线格式(线宽、标记点大小,边框、颜色)*5.曲线格式(线宽、标记点大小,边框、颜色)* 格式: plot(…,’PropertyName’,PropertyValue) PropertyName 意义 选项 LineWidth 线宽 数值 MarkerEdgeColor 标记点边框颜色 颜色字符,’r’…… MarkerFaceColor 标记点填充颜色 同上 MarkerSize 标记点大小 数值
6.例*:线宽、标记点大小,边框、颜色 %…………………… x=-5:0.5:5; y=5.*exp(-abs(x)).*sin(x); plot(x,y,'--hr','LineWidth',1.5,... 'MarkerEdgeColor','b',... 'MarkerFaceColor','m',... 'MarkerSize',10) %……………………
如何同时绘制多条曲线呢? 命令:subplot 将图像分为不同区域 例子 绘制多 条曲线 叠加开关命令 hold on(off) 同一坐标平面 上多曲线叠加 例子
7.例:子图绘制(subplot) • x=-3:0.1:3; • y1=x; • y2=x.^2; • y3=x.^3; • y4=x.^4; • subplot(2,2,1) • %版面分为2行2列, • %此为第一图,下同 • plot(x,y1) • title('y1=x') • %添加标题,下同 • subplot(2,2,2) • plot(x,y2) • title('y2=x^2') • subplot(2,2,3) • plot(x,y3) • title('y3=x^3') • subplot(2,2,4) • plot(x,y4) • title('y4=x^4')
8.叠加绘图模式 hold • 叠加绘图开关命令hold • 单独使用可交替hold on(叠加模式开)与hold off(叠加模式关)两种状态 • Hold all 在实现hold on的基础上使得新绘图循环初始设置的颜色等 • 在hold off状态下,只显示最后绘图指令的结果,在实际操作中若有多次绘图切记保存已完成结果。
例:叠加绘图 • x=-5:5; • y1=randn(size(x)); • y2=normpdf(x); • subplot(2,1,1) • hold • hold • %切换子图1的叠加绘图模式到关闭状态 • plot(x,y1,'b') • plot(x,y2,'r') • %新的绘图指令冲掉了原来的绘图结果 • title('hold off mode') • subplot(2,1,2) • hold on • %打开子图2的叠加绘图模式 • plot(x,y1,'b') • plot(x,y2,'r') • %新的绘图结果叠加在原来的图形中 • title('hold on mode')
Pause 命令 • fplot(@sin,[0,2*pi]);hold;pause;fplot(@cos,[0,2*pi]) ?
9.设置坐标轴和网格线*(了解) • 例:clear • clc • t=0:0.01*pi:2*pi; • x=sin(t); • y=cos(t); • for i=1:9 • subplot(3,3,i) • plot(x,y) • end • subplot(3,3,1) • axis auto normal • title('axis auto normal') • subplot(3,3,2) • axis([-2 2 -1.5 1.5]) • axis normal • title('axis [] normal') • subplot(3,3,3) • axis tight normal • title('axis tight normal') • subplot(3,3,4) • axis auto square • title('axis auto square') • subplot(3,3,5) • axis([-2 2 -1.5 1.5]) • axis square • title('axis [] square') • subplot(3,3,6) • axis tight square • title('axis tight square') • subplot(3,3,7) • axis auto equal • title('axis auto equal') • subplot(3,3,8) • axis([-2 2 -1.5 1.5]) • axis equal • title('axis [] equal') • subplot(3,3,9) • axis tight equal • title('axis tight equal') • 注:对于特殊的坐标轴设置,还可以应用对数/半对数模式绘图或双纵轴绘图,需要时,同学们可以学习函数 semilogx/semilogy /loglog/plotyy等等
例*:半对数绘图 • x=0:0.04*pi:20*pi; • y=exp(x); • subplot(1,2,1); • plot(x,y); • subplot(1,2,2); • semilogy(x,y);
10.图形标注 • title • xlabel • ylabel • legend • colorbar • annotation(绘图) • text、gtext • …… 注1.以上命令原则上均可以在绘图窗口通过可视化操作实现(例如insert菜单下命令),请注意老师演示。 注2. 图形标注时可以使用TEX命令,例如用\alpha表示希腊字母 ,\it表示斜体等等。
例.坐标轴和标签 • x=[1990:2:2000]; • y=[1.25 0.81 2.16 2.73 0.06 0.55]; • xin=1990:0.2:2000; • yin=spline(x,y,xin); • plot(x,y,'ob',xin,yin,'-.r') • title('1990年到2000年某地区年平均降水量图') • xlabel('\it年份','FontSize',15) • ylabel('降雨量','FontSize',8)
11.特殊绘图 1.柱状图 例、柱状图 %……………………………… X=[3 2 1;4 2 7;3 6 9;5 1 7]; subplot(1,2,1) bar(X) subplot(1,2,2) barh(X,'stacked') %………………………………
11.特殊绘图(续) 2.直方图 例、直方图 %……………………………… x=randn(1000,1); subplot(2,1,1) hist(x) subplot(2,1,2) hist(x,50) %……………………………… %极坐标下直方图用Rose函数 %玫瑰图,略
11.特殊绘图(续) 3.饼图 例、饼图 %……………………………… x=rand(1,5) y=[0.2 0.45 0.1]; subplot(1,2,1) pie(x) subplot(1,2,2) pie(y) %总和超过一时 %求比例,小于 %一则空缺处理
11.特殊绘图(续) 4.离散数据绘图(了解) 例、火柴杆图 %……………………………… t=0:0.2:10; y=exp(-0.2*t).*cos(7*t); subplot(2,1,1) stem(t,y) hold on plot(t,y) plot(t,y,'r') subplot(2,1,2) stem(t,y,'-.dg','fill')
11.特殊绘图(续) 4.离散数据绘图(了解) 例、阶梯图 %……………………………… t=0:0.5:10; y=exp(-0.2*t).*cos(t); stairs(t,y) hold on plot(t,y,'r') Matlab根据需要还可以绘制 向量场图、彗星线、等高线 图等等、需要时可以自学命 令: Compass Comet Feather Contour Quiver等等
12.函数绘图、句柄函数绘图 • Fplot(fun,limits) • Ezplot(fun,[xmin,xmax,ymin,ymax]) • ezpolar、ezcontour、ezcontourf * 例: subplot(2,2,1) fplot(@sin,[0 2*pi]) title('y=sin(x)') subplot(2,2,2) f='cos(x)+sin(3*x)'; ezplot(f,[-2*pi 2*pi -3 3]) title('y=cos(x)+sin(3x)') subplot(2,2,3) ezpolar('2+3*sin(t)+5*cos(t)',[0 2*pi]) title('\rho=sin(\theta)+cos(\theta)') subplot(2,2,4) ezcontourf(@peaks)
想一想,以下代码运行后是什么结果? • x=sym('x') • f = 1/(5+4*cos(x)) • subplot(3,1,1);ezplot(f) • f1 = diff(f) • subplot(3,1,2); ezplot(f1) • f2 = diff(f,2) • subplot(3,1,3); ezplot(f2) ?
13.工作的保存 • Save • Save as • Generate M-file
(二)、三维图形 • 数据准备* • 设置绘图区 • 绘图* • 设置视角 • 设置颜色表 • 设置光照效果 • 设置坐标轴 • 标注图形 • 保存和导出图形 Matlab 三维绘图的基本流程
三维图形 效果 • x=-8:.1:8; • y=-8:.1:8; • [X,Y]=meshgrid(x,y); • Z=(exp(X)-exp(Y)).*sin(X-Y);%数据准备完成 • figure;%创建绘图 • surf(X,Y,Z);%绘图 • view([75 25]); %视角 • colormap hsv; %Hue – saturation - value • shading interp;%颜色表 • light('position',[1 .5 .5]);%光源位置 • lighting gouraud;%类型 • material metal;%反射特性 • axis square; • colorbar; • print;
1.三维曲线绘制:plot3函数 • 用法与plot基本相同 • %………………………… • close all • x=-5:0.4:5; • y=5:-0.4:-5; • z=exp(-0.2*x).*cos(y); • [X,Y]=meshgrid(x,y); • Z=exp(-0.2*X).*cos(Y); • figure • subplot(2,1,1) • plot3(x,y,z,'or',x,y,z) • subplot(2,1,2) • plot3(X,Y,Z) • %…………………………
附:与plot(plot3)相似的comet(comet3)函数 • 例: • t=1:.1:400;x=sin(t);y=cos(t); • comet3(t,x,y) • 同学们可以自己观察结果
2.三维曲面绘制:网线图和表面图 (1)网线图 Mesh • close all • clear • [X,Y] = meshgrid(-3:.5:3); • Z = 2*X.^2-3*Y.^2; • subplot(2,2,1) • plot3(X,Y,Z) • title('plot3') • subplot(2,2,2) • mesh(X,Y,Z) • title('mesh') • subplot(2,2,3) • meshc(X,Y,Z) • title('meshc') • subplot(2,2,4) • meshz(X,Y,Z) • title('meshz')
2.三维曲面绘制:网线图和表面图 (2)表面图 Surf • close all • clear • [X,Y] = meshgrid(-3:.5:3); • Z = 2*X.^2-3*Y.^2; • subplot(2,2,1) • mesh(X,Y,Z) • title('mesh') • subplot(2,2,2) • surf(X,Y,Z) • title('surf') • subplot(2,2,3) • surfc(X,Y,Z) • title('surfc') • subplot(2,2,4) • surfl(X,Y,Z) • title('surfl')
2.三维曲面绘制:网线图和表面图 (3)网格边框设置:hidden • close all • clear • [X,Y] = meshgrid(-3:.25:3); • Z = -sqrt(X.^2+3*Y.^2); • subplot(1,2,1) • mesh(X,Y,Z) • hidden on • title('hidden on') • subplot(1,2,2) • mesh(X,Y,Z) • hidden off • title('hidden off')
3.三维特殊绘图 (1)柱状图 bar3、bar3h • clear • x=rand(3,10); • subplot(2,2,1) • bar(x) • title('bar') • subplot(2,2,2) • barh(x,'stack') • title('barh-stack') • subplot(2,2,3) • bar3(x) • title('bar3') • subplot(2,2,4) • bar3h(x,'stack') • title('bar3h-stack')
3.三维特殊绘图 (2)饼图 • x=[32 45 11 76 56]; • explode=[0 0 1 0 1]; • pie3(x,explode)
3.三维特殊绘图 (3)等值线图 • clear • [X,Y]=meshgrid(-3:0.01:3); • Z=X.^2+Y.^2; • contour3(X,Y,Z,20) • view([45 50])
3.三维特殊绘图 (3)其他 • Ezplot3 • Ezmesh • Ezsurf • Stem3 • Quiver3 • …………
作业I • #利用作图的方法观察以下方程在区间【-10,10】上解的个数 14*sin(x).^4+5*exp(x.^2)-3*x.^3-x.^6-10=0 Hint:plot(x,y);axis([-10 10 -.5 .5]) • #绘制平面上的一条双曲线,并且画出它的两条渐近线。 • #画出三维空间的单位球面,并且画出oxy平面上的赤道线。 Hint:利用sphere 生成球面上的点,再利用mesh画出球面,最后用plot画线 • 统计你和你身边同学上大学以来的各科成绩,并且画出柱状统计图。 • *利用Matlab的帮助文档完成以下命令的学习: plotyy(双纵轴绘图) comet(3)(彗星图) • Ezplot3 • Ezmesh • Ezsurf ……