Matlab图形功能与图像绘制(重叠与多区绘图、二维、三维、等值线)
目录想查找相关内容也可在页面按ctrl+F搜索文字一、MATLAB的图形功能二、瞄点连线绘图(plot)三、绘图控制——坐标系设置四、重叠绘图与多区绘图1.重叠绘图(hold on;hold off)2.多区绘图(subplot(m,n,p))五、三位空间曲线绘制(plot3(x,y,z))六、网格点的坐标生成 / 曲面绘制七、等值线绘制(contour/c...
目录
想查找相关内容也可在页面按ctrl+F搜索文字
一、MATLAB的图形功能
二、瞄点连线绘图(plot)
plot(x,y)
x的分量做横坐标,对应的y分量做纵坐标,描点作图。
plot(x1,y1, x2,y2,…)
同时绘制(x1,y1)、(x2,y2)等多条曲线。
%示例
x=0:0.1:2*pi;
plot(x,sin(x),x,cos(x))
plot(x,y,'clor-linestyle-marker'…)
在plot中可设定颜色、线型、数据点标记,clor-linestyle-marker为一字符串,由代表颜色、线型、数据点标记的字符组成。(颜色、线性、标记可以调换顺序)
(color)颜色字符:y(黄); r(红); g(绿); b(蓝); w(白); k(黑);m(紫);c(青)。
(linestyle)线型字符有:-(实线); :(点线); -.(点划线); --(虚线)。
(marker)数据点标记字符: .(小黑点); +(加号); *(星号); o(小圆圈); pentagram(五角星)。
%示例
x=0:0.1:2*pi;
plot(x,sin(x),'-r',x,cos(x),'ob')
ezplot(f)
对绘图细节控制要求不高的话还可用简易绘图指令ezplot(f)
好处:只需输入函数,默认范围。无需自己离散,去掉采样过程。
示例:
f=@(x) 2*sin(3*x)-1 ;
ezplot(f)
三、绘图控制——坐标系设置
如不指定,MATLAB将自动设置纵横坐标比例和显示范围,若不满意,可用axis指令控制。常用的形式有
- axis([xmin xmax ymin ymax]) %坐标刻度范围
- axis equal %各坐标轴单位长度相同
- axis square %图框呈正方形
- axis off %取消坐标轴显示
图形标注:
- xlabel ('字符串')
- ylabel ('字符串')
- zlabel ('字符串')
- title('字符串') % 图形窗标题
- text(x,y,'字符串') %图形窗内点(x,y)出贴标签
- gtext ('字符串') %鼠标点击处贴标签
- grid on/off %打开/关闭网格参考线
四、重叠绘图与多区绘图
1.重叠绘图(hold on;hold off)
- hold on 保持原坐标属性,可以叠加图形。
- hold off 重设坐标属性,后图覆盖前图。
示例:
x=0:0.1:6;
y=sin(x);
z=cos(x);
u=cos(2*x);
hold on
plot(x,y,'r')
plot(x,z,'b')
hold off
plot(x,u)
2.多区绘图(subplot(m,n,p))
用subplot(m,n,p)可在一个图形窗口内分割出m×n个绘图区,并指定当前绘图区为第p个。
示例:
%输入数据
x=linspace(0,2*pi,30);y=sin(x);
z=cos(x);u=2*sin(x).*cos(x);v=sin(x)./cos(x);
%绘图过程不要关闭Figure窗口
subplot(2,2,1),plot(x,y),title('y=sinx')
subplot(2,2,2),plot(x,z),title('z=cosx')
subplot(2,2,3),plot(x,u),title('u=sin2x')
subplot(2,2,4),plot(x,v),title('v=tanx')
五、三维空间曲线绘制(plot3(x,y,z))
用plot3(x,y,z)指令可以绘制空间曲线,其中x、y、z是曲线上点的坐标向量。(关键:事先准备好曲线上顺序采样点的三维坐标数组)
示例
%输入数据
t=0:pi/50:10*pi;
%绘图
plot3(sin(t),cos(t),t)
电脑绘图的本质是描点绘图,所以必须把控制曲面形状的点坐标准备好,通常是曲面上的网格点。
六、网格点的坐标生成 / 曲面绘制
- [X,Y]=meshgrid(x,y):指令将生成以x向量各分量为横坐标的竖线与以y向量各分量为纵坐标的横线相交形成的矩形网格点坐标矩阵X和Y。(用Z=fun(X,Y)生成Z坐标)
- [X,Y,Z]=sphere(n):将生成单位球面上(n+1)2个网格点坐标矩阵
- [X,Y,Z] = cylinder:高度为1,z为中轴,单位圆柱面 [X,Y,Z] = cylinder(r) 旋转面,r为旋转半径(母线)向量.
- [X,Y,Z] = cylinder(r,n) :n为旋转圆周上等分采样数.
- mesh(X,Y,Z):画三维曲面网格
- meshc(X,Y,Z): 画带等值线的三维曲面网格
- meshz(X,Y,Z): 画带底座的三维曲面网格 surf(X,Y,Z) 画三维曲面
- surfc(X,Y,Z):画带等值线的三维曲面 浓淡处理指令shading的使用方式:
- shading flat:每个小贴片都有一种颜色。
- shading faceted: 在flat用色基础上,在贴片四周勾画出黑色网线。
- shading interp: 不同贴片间颜色通过插值而平滑过渡。
示例:
[X1,Y1]=meshgrid([-3:.1:3]);
Z1=sin(X1.^2+Y1.^2)./sqrt(X1.^2+Y1.^2+eps);
[X0,Y0,Z0]=sphere(20);
X2=X0+1;
Y2=Y0+1;
Z2=0.8*Z0+2;
surf(X1,Y1,Z1) ;
hold on
mesh(X2,Y2,Z2) ;
hold off
axis equal
shading interp
七、等值线绘制(contour/contour3)
- contour(X,Y,Z) 画等高线
- contour3(X,Y,Z) 画三维等高线
示例:
[X,Y,Z]=peaks(30);
surf(X,Y,Z)
figure(2);
contour(X,Y,Z,16)
figure(3); contour3(X,Y,Z,16)
七、曲面颜色控制(colormap)
- colormap(maps):其中maps为m×3的调色盘矩阵,它的每一行是RGB三原色数组;
- colormap('调色盘名'): 其中预设的调色盘名有: hot,cool,bone,gray,hsv,jet,pink,winter,summer, spring等;
- caxis([a,b]):指令指定a,b间的实际数据与调色盘中所有颜色相对应;
- colorbar('vert'),colorbar('horiz'):colorbar指令可将调色盘中所有颜色用颜色尺条显示出来。
- surf(X,Y,Z,C):用指定颜色画曲面。其中C为与Z结构相同的颜色矩阵,若C缺省则默认为Z。
示例:
colormap('winter')
map=[1,1,0;0,1,1;1,0,1;1,0,0;0,1,0;0,0,1]
colormap(map);[X,Y,Z]=peaks(30);
surf(X,Y,Z)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)