matlab 高级绘图参考代码
2017-12-28 17:21
351 查看
一、目录
1.彗星图
二维彗星图
三维彗星图
2.帧动画
3.程序动画
4.色图变换
5.Voronoi图和三角剖分
Voronoi图
三角剖分
6.四面体
7.彩带图
彩带图
三维流彩带图
8.伪彩图
9.切片图
切片图
切片轮廓线图
10.轮廓图
显示轮廓线
显示围裙
瀑布效果
带光照模式的阴影图
11.函数绘图
轮廓线、网格图、曲面图、轮廓网格图
轮廓曲面图、二维曲线、极坐标曲线图、自定义函数
12.三维图形控制
视点
灯光效果
色彩控制
二、图形示例
1.彗星图
二维彗星图
t=0:.01:2*pi;
x=cos(2*t).*(cos(t).^2);
y=sin(2*t).*(sin(t).^2);
comet(x,y);
title('二维彗星轨迹图')
hold on
plot(x,y)
三维彗星图
a=12;
b=9;
T0=2*pi;%T0是轨道的周期
T=5*T0;
dt=pi/100;
t=[0:dt:T]';
f=sqrt(a^2-b^2);%地球与另一焦点的距离
th=12.5*pi/180;%未经轨道与x-y平面的倾角
E=exp(-t/20);%轨道收缩率
x=E.*(a*cos(t)-f);
y=E.*(b*cos(th)*sin(t));
z=E.*(b*sin(th)*sin(t));
plot3(x,y,z,'g')%画全程轨线
hold on,sphere(20);%画地球
axis off
title('卫星返回地球示例')
x1=-18*T0;
x2=6*T0;
y1=-12*T0;
y2=12*T0;
z1=-6*T0;
z2=6*T0;
axis([x1 x2 y1 y2 z1 z2])
% axis([-15 10 -15 10 -10 10])
axis equal
comet3(x,y,z,0.02);%画运动轨线
hold off
2.帧动画
Z=peaks;
surf(Z)%绘制网格表面图
axis tight
set(gca,'nextplot','replacechildren');%设定axis覆盖重画模式
title('帧动画播放示例')
for j=1:20
surf(sin(2*pi*j/20)*Z,Z)%重新绘制网格表面图,这里后面一个Z当成了颜色矩阵
F(j)=getframe;%创建帧
end
movie(F,20)%播放动画20次
3.程序动画
t=0:pi/50:10*pi
i=1;
h=plot3(sin(t(i)),cos(t(i)),t(i),'*','erasemode','none');%设定擦除模式
grid on
axis([-2 2 -2 2 -1 10*pi])
title('程序动画示例')
for i=2:length(t)
set(h,'xdata',sin(t(i)),'ydata',cos(t(i)),'zdata',t(i));
drawnow
pause(0.01)
end
4.色图变换
load spine
image(X)
colormap cool
spinmap(10)
5.Voronoi图和三角剖分
Voronoi图
rand('state',5)
x=rand(1,10);
y=rand(1,10);
subplot(131)
voronoi(x,y);%绘制voronoi图形
axis equal
axis([-0.2 1.6 -0.5 2.5])
subplot(132)
[vx,vy]=voronoi(x,y);
plot(x,y,'r+',vx,vy,'b-');%应用返回值绘制
axis equal
axis([-0.2 1.6 -0.5 2.5])
subplot(133)
rand('state',5);
x=rand(10,2);
[v,c]=voronoin(x);%返回值v参数维voronoi顶点矩阵,返回值c参数为voronoi元胞数组
for i=1:length(c)
if all(c{i}~=1)
patch(v(c{i},1),v(c{i},2),i);%应用色图i
end
end
axis equal
axis([-0.2 1.6 -0.5 2.5])
box on
三角剖分
[x,y]=meshgrid(1:15,1:15);
tri=delaunay(x,y);
z=peaks(15);
trimesh(tri,x,y,z)
6.四面体
d=[-1 1];
[x,y,z]=meshgrid(d,d,d);%定义一个立方体
x=[x(:);0];
y=[y(:);0];
z=[z(:);0];%[x,y,z]分别为加上中心的立方体顶点
X=[x(:) y(:) z(:)];
Tes=delaunayn(X);%返回m×n的数组值
tetramesh(Tes,X);%绘制四面体图
camorbit(20,0);%旋转摄像目标位置
7.彩带图
彩带图
[x,y]=meshgrid(-3:.5:3,-3:.1:3);
z=peaks(x,y);
ribbon(y,z)
三维流彩带图
load wind%打开保存的数据
lims=[100.64 116.67 17.25 28.75 -0.02 6.86];%定义坐标轴范围
[x,y,z,u,v,w]=subvolume(x,y,z,u,v,w,lims);%lims来定义数据子集
[sx sy sz]=meshgrid(110,20:5:30,1:5);%定义网格点
verts=stream3(x,y,z,u,v,w,sx,sy,sz,.5);%计算彩带顶点
cav=curl(x,y,z,u,v,w);%计算卷曲角速度
wind_speed=sqrt(u.^2+v.^2+w.^2);%计算流速
h=streamribbon(verts,x,y,z,cav,wind_speed,2);%绘制流彩带图
view(3)
8.伪彩图
n=6%定义轮数
r=(0:n)'/n;%定义轮的半径
theta=pi*(-n:n)/n;%定义轮的扇区角
X=r*cos(theta);
Y=r*sin(theta);%定义网格顶点
C=r*cos(2*theta);%定义色图
pcolor(X,Y,C)%绘制伪彩图axis equal tight
9.切片图
切片图
[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
xslice = [-1.2,.8,2]; yslice = 2; zslice = [-2,0];
slice(x,y,z,v,xslice,yslice,zslice)
colormap hsv
切片轮廓线图
[x y z v]=flow;%打开水流数据
h=contourslice(x,y,z,v,[1:9],[],[0],linspace(-8,2,10));%切片轮廓线
view([-12 30])
10.轮廓图
显示轮廓线
[x,y,z]=peaks;
subplot(1,2,1)
meshc(x,y,z);%同时画出网格图与轮廓线
title('meshc 网格图与轮廓线')
axis([-inf inf -inf inf -inf inf]);
subplot(1,2,2)
surfc(x,y,z);%同时画出曲面图与轮廓线
title('surfc 曲面图与轮廓线')
axis([-inf inf -inf inf -inf inf]);
显示围裙
[x y z]=peaks;
meshz(x,y,z);
瀑布效果
[X,Y,Z]=peaks(30);
waterfall(X,Y,Z)
带光照模式的阴影图
[x,y]=meshgrid(-3:1/8:3);
z=peaks(x,y);
surfl(x,y,z);
shading interp%着色处理
colormap(gray);%灰度处理
axis([-3 3 -3 3 -8 8])
11.函数绘图
轮廓线、网格图、曲面图、轮廓网格图
%图1绘制轮廓线、网格图、曲面图、轮廓网格图
subplot(221)
f=['3*(1-x)^2*exp(-(x^2)-(y+1)^2)-10*(x/5-x^3-y^5)*exp(-x^2-y^2)-1/3*exp(-(x+1)^2-y^2)'];%定义双变量x、y的函数式
ezcontour(f,[-3,3],49)%x、y为[-3 3],网格为49×49
subplot(222)
ezmesh('sqrt(x^2+y^2)');
subplot(223)
ezsurf('real(atan(x+i*y))')%经过滤波,如果相同数据surf绘图没有滤波
subplot(224)
ezmeshc('y/(1+x^2+y^2)',[-5,5,-2*pi,2*pi])%x、y的数值范围分别为[-5 5]、[-2*pi 2*pi]
轮廓曲面图、二维曲线、极坐标曲线图、自定义函数
%图2绘制轮廓曲面图、二维曲线、极坐标曲线图、自定义函数
figure(2)
subplot(221)
ezsurfc('sin(u)*sin(v)')
subplot(222)
ezplot('x^2-y^4');
subplot(223)
ezpolar('1+cos(t)')
subplot(224)
fplot('myfun',[-20 20])
function Y=myfun(x)
Y(:,1)=200*sin(x(:))./x(:);
Y(:,2)=x(:).^2;
三维曲线图
%绘制三维曲线图
figure(3)
ezplot3('sin(t)','cos(t)','t',[0,6*pi])
12.三维图形控制
视点
View
图形旋转
subplot(121)
surf(peaks);
title('旋转前图形');
subplot(122)
h=surf(peaks);
rotate(h,[1 0 1],180)
title('旋转后图形');
灯光效果
%灯光效果(1)camlight(2)light(3)lightangle(4)lighting(5)material
sphere;
camlight
色彩控制
%色彩控制(1)缺省设置colordef、whitebg(2)色图colormap(3)浓淡处理shading
load flujet
image(X)
colormap(jet)
subplot(131)
sphere(16)
axis square
shading flat
title('Flat Shading')
subplot(132)
sphere(16)
axis square
shading faceted
title('Faceted Shading')
subplot(133)
sphere(16)
axis square
shading interp
title('Interpolated Shading')
对于二维矩阵Z,Z的列下标当作x坐标轴的自变量,行下标当作y坐标轴的自变量,Z作为色值。
三维绘图函数
1.彗星图
二维彗星图
三维彗星图
2.帧动画
3.程序动画
4.色图变换
5.Voronoi图和三角剖分
Voronoi图
三角剖分
6.四面体
7.彩带图
彩带图
三维流彩带图
8.伪彩图
9.切片图
切片图
切片轮廓线图
10.轮廓图
显示轮廓线
显示围裙
瀑布效果
带光照模式的阴影图
11.函数绘图
轮廓线、网格图、曲面图、轮廓网格图
轮廓曲面图、二维曲线、极坐标曲线图、自定义函数
12.三维图形控制
视点
灯光效果
色彩控制
二、图形示例
1.彗星图
二维彗星图
t=0:.01:2*pi;
x=cos(2*t).*(cos(t).^2);
y=sin(2*t).*(sin(t).^2);
comet(x,y);
title('二维彗星轨迹图')
hold on
plot(x,y)
三维彗星图
a=12;
b=9;
T0=2*pi;%T0是轨道的周期
T=5*T0;
dt=pi/100;
t=[0:dt:T]';
f=sqrt(a^2-b^2);%地球与另一焦点的距离
th=12.5*pi/180;%未经轨道与x-y平面的倾角
E=exp(-t/20);%轨道收缩率
x=E.*(a*cos(t)-f);
y=E.*(b*cos(th)*sin(t));
z=E.*(b*sin(th)*sin(t));
plot3(x,y,z,'g')%画全程轨线
hold on,sphere(20);%画地球
axis off
title('卫星返回地球示例')
x1=-18*T0;
x2=6*T0;
y1=-12*T0;
y2=12*T0;
z1=-6*T0;
z2=6*T0;
axis([x1 x2 y1 y2 z1 z2])
% axis([-15 10 -15 10 -10 10])
axis equal
comet3(x,y,z,0.02);%画运动轨线
hold off
2.帧动画
Z=peaks;
surf(Z)%绘制网格表面图
axis tight
set(gca,'nextplot','replacechildren');%设定axis覆盖重画模式
title('帧动画播放示例')
for j=1:20
surf(sin(2*pi*j/20)*Z,Z)%重新绘制网格表面图,这里后面一个Z当成了颜色矩阵
F(j)=getframe;%创建帧
end
movie(F,20)%播放动画20次
3.程序动画
t=0:pi/50:10*pi
i=1;
h=plot3(sin(t(i)),cos(t(i)),t(i),'*','erasemode','none');%设定擦除模式
grid on
axis([-2 2 -2 2 -1 10*pi])
title('程序动画示例')
for i=2:length(t)
set(h,'xdata',sin(t(i)),'ydata',cos(t(i)),'zdata',t(i));
drawnow
pause(0.01)
end
4.色图变换
load spine
image(X)
colormap cool
spinmap(10)
5.Voronoi图和三角剖分
Voronoi图
rand('state',5)
x=rand(1,10);
y=rand(1,10);
subplot(131)
voronoi(x,y);%绘制voronoi图形
axis equal
axis([-0.2 1.6 -0.5 2.5])
subplot(132)
[vx,vy]=voronoi(x,y);
plot(x,y,'r+',vx,vy,'b-');%应用返回值绘制
axis equal
axis([-0.2 1.6 -0.5 2.5])
subplot(133)
rand('state',5);
x=rand(10,2);
[v,c]=voronoin(x);%返回值v参数维voronoi顶点矩阵,返回值c参数为voronoi元胞数组
for i=1:length(c)
if all(c{i}~=1)
patch(v(c{i},1),v(c{i},2),i);%应用色图i
end
end
axis equal
axis([-0.2 1.6 -0.5 2.5])
box on
三角剖分
[x,y]=meshgrid(1:15,1:15);
tri=delaunay(x,y);
z=peaks(15);
trimesh(tri,x,y,z)
6.四面体
d=[-1 1];
[x,y,z]=meshgrid(d,d,d);%定义一个立方体
x=[x(:);0];
y=[y(:);0];
z=[z(:);0];%[x,y,z]分别为加上中心的立方体顶点
X=[x(:) y(:) z(:)];
Tes=delaunayn(X);%返回m×n的数组值
tetramesh(Tes,X);%绘制四面体图
camorbit(20,0);%旋转摄像目标位置
7.彩带图
彩带图
[x,y]=meshgrid(-3:.5:3,-3:.1:3);
z=peaks(x,y);
ribbon(y,z)
三维流彩带图
load wind%打开保存的数据
lims=[100.64 116.67 17.25 28.75 -0.02 6.86];%定义坐标轴范围
[x,y,z,u,v,w]=subvolume(x,y,z,u,v,w,lims);%lims来定义数据子集
[sx sy sz]=meshgrid(110,20:5:30,1:5);%定义网格点
verts=stream3(x,y,z,u,v,w,sx,sy,sz,.5);%计算彩带顶点
cav=curl(x,y,z,u,v,w);%计算卷曲角速度
wind_speed=sqrt(u.^2+v.^2+w.^2);%计算流速
h=streamribbon(verts,x,y,z,cav,wind_speed,2);%绘制流彩带图
view(3)
8.伪彩图
n=6%定义轮数
r=(0:n)'/n;%定义轮的半径
theta=pi*(-n:n)/n;%定义轮的扇区角
X=r*cos(theta);
Y=r*sin(theta);%定义网格顶点
C=r*cos(2*theta);%定义色图
pcolor(X,Y,C)%绘制伪彩图axis equal tight
9.切片图
切片图
[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
xslice = [-1.2,.8,2]; yslice = 2; zslice = [-2,0];
slice(x,y,z,v,xslice,yslice,zslice)
colormap hsv
切片轮廓线图
[x y z v]=flow;%打开水流数据
h=contourslice(x,y,z,v,[1:9],[],[0],linspace(-8,2,10));%切片轮廓线
view([-12 30])
10.轮廓图
显示轮廓线
[x,y,z]=peaks;
subplot(1,2,1)
meshc(x,y,z);%同时画出网格图与轮廓线
title('meshc 网格图与轮廓线')
axis([-inf inf -inf inf -inf inf]);
subplot(1,2,2)
surfc(x,y,z);%同时画出曲面图与轮廓线
title('surfc 曲面图与轮廓线')
axis([-inf inf -inf inf -inf inf]);
显示围裙
[x y z]=peaks;
meshz(x,y,z);
瀑布效果
[X,Y,Z]=peaks(30);
waterfall(X,Y,Z)
带光照模式的阴影图
[x,y]=meshgrid(-3:1/8:3);
z=peaks(x,y);
surfl(x,y,z);
shading interp%着色处理
colormap(gray);%灰度处理
axis([-3 3 -3 3 -8 8])
11.函数绘图
轮廓线、网格图、曲面图、轮廓网格图
%图1绘制轮廓线、网格图、曲面图、轮廓网格图
subplot(221)
f=['3*(1-x)^2*exp(-(x^2)-(y+1)^2)-10*(x/5-x^3-y^5)*exp(-x^2-y^2)-1/3*exp(-(x+1)^2-y^2)'];%定义双变量x、y的函数式
ezcontour(f,[-3,3],49)%x、y为[-3 3],网格为49×49
subplot(222)
ezmesh('sqrt(x^2+y^2)');
subplot(223)
ezsurf('real(atan(x+i*y))')%经过滤波,如果相同数据surf绘图没有滤波
subplot(224)
ezmeshc('y/(1+x^2+y^2)',[-5,5,-2*pi,2*pi])%x、y的数值范围分别为[-5 5]、[-2*pi 2*pi]
轮廓曲面图、二维曲线、极坐标曲线图、自定义函数
%图2绘制轮廓曲面图、二维曲线、极坐标曲线图、自定义函数
figure(2)
subplot(221)
ezsurfc('sin(u)*sin(v)')
subplot(222)
ezplot('x^2-y^4');
subplot(223)
ezpolar('1+cos(t)')
subplot(224)
fplot('myfun',[-20 20])
function Y=myfun(x)
Y(:,1)=200*sin(x(:))./x(:);
Y(:,2)=x(:).^2;
三维曲线图
%绘制三维曲线图
figure(3)
ezplot3('sin(t)','cos(t)','t',[0,6*pi])
12.三维图形控制
视点
View
图形旋转
subplot(121)
surf(peaks);
title('旋转前图形');
subplot(122)
h=surf(peaks);
rotate(h,[1 0 1],180)
title('旋转后图形');
灯光效果
%灯光效果(1)camlight(2)light(3)lightangle(4)lighting(5)material
sphere;
camlight
色彩控制
%色彩控制(1)缺省设置colordef、whitebg(2)色图colormap(3)浓淡处理shading
load flujet
image(X)
colormap(jet)
subplot(131)
sphere(16)
axis square
shading flat
title('Flat Shading')
subplot(132)
sphere(16)
axis square
shading faceted
title('Faceted Shading')
subplot(133)
sphere(16)
axis square
shading interp
title('Interpolated Shading')
对于二维矩阵Z,Z的列下标当作x坐标轴的自变量,行下标当作y坐标轴的自变量,Z作为色值。
常用的三维图形 |
---|
三维曲线图 |
三维网格图 |
三维曲面图:三维网格图将格子填充颜色 |
三维绘图流程 |
给出绘图的数据 –> 设置图形窗口 –> 设置图形的视角 –> 设置图形的颜色 –> 设置图形的光照 –>…. –> 设置坐标轴 –> 设置图形标注 |
函数 | 函数功能 |
---|---|
plot3(X1,Y1,Z1,…) | 此 MATLAB 函数(其中 X1、Y1、Z1 为矢量或矩阵)在三维空间中绘制一个或多个线条,这些线条穿过坐标为 X1、Y1 和 Z1 的元素的点。 |
Z = peaks(X,Y)M | 示例函数,产生三维曲面图的数据,(X,Y)节点的数据为Z |
[X,Y] = meshgrid(xgv,ygv) | 产生二维网格坐标矩阵,即根据向量xgv,ygv来切割XOY平面 |
[X,Y,Z] = meshgrid(xgv,ygv,zgv) | 给出三维网格坐标矩阵,即切割三维空间 |
根据数据结点绘制三维图形 | |
mesh(X,Y,Z) | 使用(X,Y,Z)确定的点绘制网格图,并且颜色与曲面高度Z成比例 |
meshc(X,Y,Z) | 绘制带等高线的三维网格图 |
meshz(X,Y,Z) | 绘制带底座的三维网格图 |
waterfall(X,Y,Z) | 绘制三维网格图 |
surf(X,Y,Z) | 绘制三维曲面图 |
surfc(X,Y,Z) | 绘制带等高线的三维曲面图 |
surfl(X,Y,Z) | 绘制带光照效果的三维曲面图 |
特殊三维绘图 | |
[X,Y,Z] = cylinder(r,n) | 产生半径为r,n个节点的柱面数据 |
[X,Y,Z] = sphere(n) | 产生单位球面图的数据,n是坐标轴的节点数 |
contour3(X,Y,Z) | 绘制三维的等高线 |
bar3() | 绘制三维的柱状图 |
bar3h() | 绘制三维的水平的柱状图 |
pie3() | 绘制三维的饼状图 |
scatter3() | 绘制三维的散点图 |
stem3() | 绘制三维的火柴杆图 |
quiver3() | 绘制三维的向量场图 |
comet3() | 绘制三维的彗星图 |
fill3() | 绘制三维的填充图 |
ribbon() | 绘制三维的彩带图 |
非网格数据绘图 | |
vq = griddata(x,y,v,xq,yq,method) | 对v = f(x,y)进行插值,插值结点为(xq,yq),结果为vq。插值方法为method |
patch(X,Y,Z) | 创建三维片块模型 |
根据符号函数绘制三维图形 | |
ezplot3() | 绘制三维曲线 |
ezmesh() | 绘制三维网格图 |
ezmeshc() | 绘制带等高线的三维网格图 |
ezsurf() | 绘制三维曲面图 |
ezsurfc() | 绘制带等高线的三维曲面图 |
三维图形的设置 | |
视角 | |
view(az,el) | 设置视角方位角为az,仰角为el,都以度为单位,方位角 az 是从负 y 轴围绕 z 轴水平旋转的角度(以度为单位)。正值表示按逆时针方向旋转视点。el 是视点的垂直仰角(以度为单位)。仰角为正值对应于在对象上方移动;负值对应于在对象下方移动。 |
view([x,y,z]) | 视角为向量[x,y,z]所指方向 |
rotate3d on/off | 设置图形的三维视角的开启/关闭 |
hidden on/off | 设置三维网格图的透图视效果开启/关闭,默认关闭 |
色图 | m*3的矩阵,每一行都是RGB的三元组,默认为64*3,一个图形窗口(不是子图)只能有一个色图 |
colormap(CM) | 设置色图为CM,默认为jet |
rgbplot(CM) | 绘制色图CM |
colorbar(….) | 添加颜色条 |
brighten(beta) | 增亮或变暗图形的色图。beta为[-1 1];beta为[-1 0]时,变暗;beta为[0 1]时,增亮。 |
caxis([cmin cmax]) | 将颜色限制设置为指定的最小值和最大值。小于 cmin 或大于 cmax 的数据值将分别映射到 cmin 和 cmax。 |
shading options | 设置曲面图形的着色方式,flat,interp,faceted。 |
colordef(…) | 设置图形的背景颜色 |
light | 添加默认的光源 |
light(‘PropertyName’,propertyvalue,…) | 使用给定属性的指定值创建一个光源对象 |
lighting options | 设置光照模式 |
图形的透视 | |
hidden off | |
图形的镂空 | |
例子:z(10:15,10:15) = NaN | NaN的点不显示 |
图形的切面 | |
例子:z(10:15,10:15) = 0 | 0的点显示为切面 |
四维绘图 | |
surf(x,y,z,c) | 利用颜色c来表示第四个维度 |
图形动画 | |
spinmap(t,inc) | 使色图做循环变化,旋转时间为t,旋转快慢为inc |
M(i) = getframe | 对图形进行拍照,存储在数组M中 |
movie(M,n,fps) | 每秒fps的速度把M的中的画面播放n次 |
rotate(h,direction,alpha) | 使图形h绕direction旋转alpha度。direction以向量形式给出 |
制作动画的3种典型方法 | |
1 | 改变图形的参数 |
2 | 改变图形的视角 |
3 | 使用rotate函数 |
图形的输出 | |
编辑->复制图形 | 复制到windows的剪贴板 |
文件->保存为 | 保存为指定格式的图片 |
截图 |
相关文章推荐
- 超全的matlab绘图实例及代码(曲线,曲面,饼状图,柱形图,网格图,球面等)
- Matlab绘图系列之高级绘图
- Matlab绘图系列之高级绘图
- Matlab绘图系列之高级绘图
- Matlab绘图系列之高级绘图
- Matlab绘图高级部分
- Matlab绘图高级部分
- Matlab中的高级绘图
- 模糊C均值聚类代码参考(Matlab)
- Matlab高级绘图
- MATLAB plot绘图参考
- Matlab绘图系列之高级绘图
- MATLAB plot绘图参考
- Matlab绘图系列之高级绘图
- Matlab高级绘图
- Matlab绘图系列之高级绘图
- Matlab绘图系列之高级绘图
- [置顶] Matlab绘图高级部分
- Matlab绘图高级部分
- Matlab高级绘图