4.Matlab绘图

二维绘图:

% plot(x)   plot(x,y)    plot(x,y,x2,y2)   plot(x,y,选项)
% 选项:
% 线型:"-"实线   ":"虚线  "-."点画线  "--"双画线
% 颜色:"r" "g" "b" "w" "k"(黑色)
% 数据点标记:"*"  "o"(圆圈) "s"(方块) "^"

% 绘制一条折线。
subplot(3,3,1);
x=[2.5, 3.5, 4, 5];
y=[1.5, 2.0, 1, 1.5];
plot(x, y)


% 绘制sin(x)、sin(2x)、sin(x/2)的函数曲线。
subplot(3,3,2);
x=linspace(0,2*pi,100);
y=[sin(x); sin(2*x); sin(0.5*x)];
plot(x,y)

subplot(3,3,3);
t=0:0.01:2*pi;
t1=t';
x=[t1, t1, t1];
y=[sin(t1), sin(2*t1), sin(0.5*t1)];
plot(x,y)


% 采用不同个数的数据点绘制正弦函数曲线,观察曲线形态。
subplot(3,3,4);
t1=linspace(0, 2*pi, 10);
t2=linspace(0, 2*pi, 20);
t3=linspace(0, 2*pi, 100);
plot(t1, sin(t1), t2,sin(t2)+1, t3, sin(t3)+2)


% 用不同线型和颜色在同一坐标内绘制曲线及其包络线。
subplot(3,3,5);
x=(0:pi/50:2*pi)';
y1=2*exp(-0.5*x)*[1,-1];
y2=2*exp(-0.5*x).*sin(2*pi*x);
x1=0:0.5:6;
y3=2*exp(-0.5*x1).*sin(2*pi*x1);
plot(x, y1, 'k:', x, y2, 'b--', x1, y3, 'rp')


% 绘制函数sin(1/x)的图形
subplot(3,3,6);
x=0:0.005:0.2;
y=sin(1./x);
plot(x,y)


% 采用自适应采样fplot函数绘制函数sin(1/x)
% 根据参数变化特性(快慢),设置采样间隔(小大)
% ①fplot(f,lims,选项)  //  ②fplot(funx,funy,tlims,选项)
% ①f:函数(一般函数句柄形式); lims:x轴取值范围(默认[-5,5]); 选项同plot
% ②双输入函数funx,funy(同函数句柄),tlims采用[tmin,tmax]描述funx和funy取值范围
subplot(3,3,7);
fplot(@(x) sin(1./x),[0,0.2], 'b')


% 已知螺旋线的参数方程,绘制曲线
subplot(3,3,8);
fplot(@(t)t.*sin(t), @(t)t.*cos(t), [0,10*pi], 'r')

辅助:

% 绘制[-2π,2π]区间的正弦曲线
% title(图形标题,属性名,属性值)
subplot(3,3,1);
x=-2*pi:0.05:2*pi;
y=sin(x);
plot(x,y)
title('y=sin(x)')
title({'MATLAB', 'y=sin(x)'})       %(LaTex格式控制符{})
title('y=sin(x)','Color','r','FontSize',24)
xlabel('-2\pi \leq x \leq 2\pi')    %给x轴添加标签
text(-2*pi, 0, '-2{\pi}')           %添加文字说明
text(3, 0.28, '\leftarrow sin(x)')  % gtext(说明) 跟随鼠标


% 绘制不同频率的正弦曲线并用图例标注曲线。
subplot(3,3,2)
x = linspace(0, 2*pi, 100);
plot(x, [sin(x); sin(2*x); sin(3*x)])
legend('sin(x)', 'sin(2x)', 'sin(3x)')

% 绘制同心圆,并设置坐标轴
subplot(3,3,3);
x = [0, 1, 1, 0, 0];
y = [0, 0, 1, 1, 0];
plot(x,y)
axis([-0.1, 1.1, -0.1, 1.1])    %坐标范围控制
axis equal;                     %横纵坐标轴采用等长刻度

% 绘制sin(x)、sin(2x)、sin(x/2)的函数曲线并添加图形标注。
subplot(3,3,4);
x=linspace(0,2*pi,100);
y=[sin(x); sin(2*x); sin(0.5*x)];
plot(x,y)
axis([0 7 -1.2, 1.2]) 
title('不同频率正弦函数曲线'); 
xlabel('Variable X');  ylabel('Variable Y'); 
text(2.5, sin(2.5), 'sin(x)'); 
text(1.5, sin(2*1.5), 'sin(2x)');
text(5.5, sin(0.5*5.5), 'sin(0.5x)');
legend('sin(x)','sin(2x)','sin(0.5x)')
grid on         %显示网格线

% 用图形保持功能绘制5个同心圆。
subplot(3,3,5);
x=0:pi/100:2*pi;
for n=1:2:10
    plot(n*sin(x),n*cos(x))
    hold on
end
axis square

% 划分多子图
x=linspace(0,2*pi,60);
subplot(3,3,6);
plot(x,sin(x)-1);
title('sin(x)-1');axis ([0,2*pi,-2,0])
subplot(3,3,6);
plot(x,cos(x)+1);
title('cos(x)+1');axis ([0,2*pi,0,2])
subplot(4,4,15)      
plot(x,tan(x));
title('tan(x)');axis ([0,2*pi,-40,40])
subplot(4,4,16)        
plot(x,cot(x));
title('cot(x)');axis ([0,2*pi,-35,35])

% 在同一个图形窗口绘制多条曲线有哪些方法?
% x,y为矩阵(向量)形式,用plot(x,y)或plot(x1,y1, x2,y2, …, xn,yn)命令
% 用 hold on 命令,维持前一曲线
% 用subplot函数对图形窗口进行分割,在各子窗口中显示各曲线

其他形式的二维曲线:

% 对数坐标图
%semilogx(x1,y1,选项1,x2,y2,选项2,...) (x轴为常用对数刻度)
%semilogy(x1,y1,选项1,x2,y2,选项2,...) (y轴为常用对数刻度)
%loglog(x1,y1,选项1,x2,y2,选项2,...)   (x、y均为对数刻度)

% 绘制1/x的直角线性坐标图和三种对数坐标图。
x=0:0.1:10;
y=1./x;
subplot(2,2,1)
plot(x,y) 
title('plot(x,y)');grid on
subplot(2,2,2)
semilogx(x,y)    
title('semilogx(x,y)');grid on
subplot(2,2,3)
semilogy(x,y) 
title('semilogy(x,y)');grid on
subplot(2,2,4)
loglog(x,y) 
title('loglog(x,y)');grid on

% 极坐标图
% polar(theta,rho,选项)
% theta:极角,rho:极径,选项同plot


% 按极坐标方程ρ=1-sin t绘制心形曲线。
subplot(1,2,1)
t = 0:pi/100:2*pi;
r = 1-sin(t);
polar(t,r)
subplot(1,2,2)
t1 = t-pi/2;
r1 = 1-sin(t1);
polar(t,r1)
 

% scatter: 散点图 scatter(x,y,选项,'filled')
% x,y定位数据点,filled指定填充数据点标记,省略时空心。
% stairs:阶梯图
% stem: 杆图

% 以散点图形式绘制桃心曲线
t = 0:pi/50:2*pi;
x = 16*sin(t).^3;
y = 13*cos(t)-5*cos(2*t)-2*cos(3*t)-cos(4*t);
scatter(x,y,'rd','filled')

% pie(扇形图) pie(x)  pie(x,explode)
% x存储待统计数据,explode控制图块的显示模式

% area(面积图) 同plot

% 某次考试优秀、良好、中等、及格、不及格的人数分别为:7、17、23、9、4,试用扇形统计图作成绩统计分析。
score = [5, 17, 23, 9, 4];
ex = [0,0,0,0,1];
pie(score, ex)
legend('优秀','良好','中等','及格','不及格',...
'location','eastoutside')
 

% compass:罗盘图
% feather:羽毛图
% quiver:箭头图  quiver(x,y,u,v)
% (x,y)矢量起点,(u,v)矢量终点

% 已知向量A、B,求A+B,并用矢量图表示。
A=[4,5]; B=[-10,0]; C=A+B;
hold on;
quiver(0, 0, A(1), A(2));
quiver(0, 0, B(1), B(2));
quiver(0, 0, C(1), C(2));
text(A(1),A(2),'A');text(B(1),B(2),'B'); text(C(1),C(2),'C'); 
axis ([-12, 6, -1, 6])
grid on

% bar 垂直:①bar(y,style) ②bar(x,y,style)
% (②中参数x存储横坐标)参数y是数据
% 选项style用于指定分组排列模式("grouped"簇状分组(默认);"stacked"堆积分组)
% barh 水平
% 绘制分组条形图。
y=[1,2,3,4,5; 1,2,1,2,1; 5,4,3,2,1];
subplot(3,1,1)
bar(y)
title('Group')
subplot(3,1,2)
bar(y, 'stacked')
title('Stack')

% 某公司2015~2017年家电类商品1月份的销售数据,绘制条形图对比数据。
subplot(3,1,3)
x=[2015,2016,2017];
y=[68,80,115,98,102;
75,88,102,99,110;
81,86,125,105,115];
bar(x, y)
title('Group');

% hist直角坐标下: hist(y) hist(y,x)
% 参数y是要统计的数据,x用于指定区域的划分方式(缺省时,默认十个等分区间)

% rose极坐标下: rose(theta,x)
% 参数theta用于确定每一区间与原点的角度,x指定区间的划分方式


% 绘制服从高斯分布的直方图。
y=randn(500,1);
subplot(3,1,1); 
hist(y); 
title('高斯分布直方图');
subplot(3,1,2); 
x=-3:0.2:3;
hist(y,x); 
title('指定区间中心点的直方图')

% 绘制高斯分布数据在极坐标下的直方图。
subplot(3,1,3); 
y=randn(500,1);
theta=y*pi;
rose(theta)
title('在极坐标下的直方图')

三维曲线:

% 例4  绘制三条不同长度的正弦曲线。 
t1=0:0.01:1.5*pi;
t2=0:0.01:2*pi;
t3=0:0.01:3*pi;
plot3(t1,sin(t1),t1, t2,sin(t2)+1,t2, t3,sin(t3)+2,t3)
 

% 绘制螺旋线  
t=linspace(0, 10*pi, 200);
x=sin(t)+t.*cos(t);
y=cos(t)-t.*sin(t);
z=t;
subplot(1, 3, 1)
plot3(x, y, z)
grid on
subplot(1, 3, 2)
plot3(x(1:4:200), y(1:4:200), z(1:4:200))
grid on

%  绘制空间曲线
subplot(1, 3, 3)
t=0:pi/50:6*pi;
x=cos(t);
y=sin(t);
z=2*t;
plot3(x,y,z,'p')
xlabel('X'),ylabel('Y'),zlabel('Z');
grid on


% 绘制墨西哥帽顶曲线
subplot(1,2,1);
xt = @(t) exp(-t/10).*sin(5*t);
yt = @(t) exp(-t/10).*cos(5*t);
zt = @(t) t;
fplot3(xt, yt, zt, [-12, 12])
% 用红色点划线绘制墨西哥帽顶曲线。
subplot(1,2,2);
fplot3(xt, yt, zt, [-12, 12], 'r-.')
 


% 在空间不同位置绘制5条正弦曲线。
t=0:0.01:2*pi;
t=t';
x=[t, t, t, t, t];
y=[sin(t), sin(t)+1, sin(t)+2, sin(t)+3, sin(t)+4];
z=x;
plot3(x,y,z)
%{
% 这个例子也可以采用以下代码实现。
t=0:0.01:2*pi;
x=t;
y=[sin(t); sin(t)+1; sin(t)+2; sin(t)+3; sin(t)+4];
z=x;
plot3(x,y,z)
%}

% plot3(x,y,z)
% fplot3(funx,funy,funz,tlims)
% tlims为参数函数自变量取值范围,用二元向量[tmin,tmax]描述,默认为[-5,5]

% 绘制一条空间折线

subplot(1,3,1);
x=[0.2, 1.8, 2.5];
y=[1.3, 2.8, 1.1];
z=[0.4, 1.2, 1.6];
plot3(x, y, z)
grid on
axis([0, 3, 1, 3, 0, 2]);


%分别用plot3和fplot3函数绘制空间曲线,比较函数用法:
subplot(1,3,2);
t=linspace(0,2*pi,100);
x=3.*sin(t);
y=cos(t);
z=3.*sin(t)+cos(t);
plot3(x,y,z)

subplot(1,3,3);
xt=@(t)3*sin(t);
yt=@(t)cos(t);
zt=@(t)3*sin(t)+cos(t);
fplot3(xt,yt,zt,[0,2*pi])
 

三维曲面:

% [x,y,z]=sphere(n)         绘制三维球面
% [x,y,z]=cylinder(R,n)     绘制三维柱面

% 用cylinder函数分别绘制柱面、花瓶和圆锥面。
subplot(2,2,1);
[x,y,z]=cylinder;
surf(x,y,z);
subplot(2,2,2);
t=linspace(0,2*pi,40);
[x,y,z]= cylinder(2+cos(t),30);
surf(x,y,z);
subplot(2,2,3);
[x,y,z]= cylinder(0:0.2:2,30);
surf(x,y,z);

% 用cylinder函数绘制两个相互垂直且直径相等的圆柱面的相交图形
subplot(2,2,4);
[x,y,z]= cylinder(1,60);
z=[-1*z(2,:);z(2,:)];
surf(x,y,z)
hold on
surf(y,z,x)
axis equal

% 生成绘图数据矩阵:
% peaks(n) peaks(V) peaks(x,y) peaks 

% 参数方程有两个自变量u、v;三个参数x,y,z时:
% fsurf(funx,funy,funz,uvlims)
% fmesh(funx,funy,funz,uvlims)
% uvlims为参数取值范围,用4元向量[umin,umax,vmin,vmax]描述

% 绘制螺旋曲面。
funx = @(u,v) u.*sin(v);
funy = @(u,v) -u.*cos(v);
funz = @(u,v) v;
fsurf(funx,funy,funz,[-5 5 -5 -2])
hold on
fmesh(funx,funy,funz,[-5 5 -2 2])
hold off

% 绘制空间曲线。
% 利用meshgrid生成平面网格数据
% [X,Y]=meshgrid(x,y);
% 参数x、y为向量,存储网格点坐标的X、Y为矩阵

x = 2:6; 
y = (3:8)';
[X, Y] = meshgrid(x, y);
Z = randn(size(X));
plot3(X,Y,Z)
grid on;
 

% mesh(x,y,z,c)     mesh(z,c)    绘制三维网格图
% surf(x,y,z,c)     surf(z,c)    绘制三维曲面图
% x、y是网格坐标矩阵,z是高度矩阵,c用于指定不同高度下曲面颜色
% 若c省略,c=z,这样可使不同高度层次分明
% 若x、y省略,z矩阵第2(1)维下标为x(y)轴坐标


% 绘制三维曲面图
t = -2:0.2:2; 
[X, Y] = meshgrid(t);
Z = X .* exp(-X.^2 - Y.^2);
subplot(1,3,1)
mesh(X,Y,Z); %网格图:线条有颜色,线条间补面无颜色(颜色沿z轴变化)
subplot(1,3,2)
surf(X,Y,Z); %曲面图:线条是黑色,线条间补面有颜色(颜色沿z轴变化)
subplot(1,3,3)
plot3(X,Y,Z); 
grid on
 

% meshc (meshz) 为带等高线(底座)的三维网格曲面函数
% surfc (surfl) 为带等高线(光照效果)的三维曲面函数


% 用4种方式绘制函数=(?1)^2+(?2)^2?1的曲面图
% 其中,x∈[0,2],y∈[1,3]
[x,y]=meshgrid(0:0.1:2,1:0.1:3);
z=(x-1).^2+(y-2).^2-1;
subplot(2,2,1);
meshc(x,y,z);title('meshc(x,y,z)')
subplot(2,2,2);
meshz(x,y,z);title('meshz(x,y,z)')
subplot(2,2,3);
surfc(x,y,z);title('surfc(x,y,z)')
subplot(2,2,4);
surfl(x,y,z); title('surfl(x,y,z)')

交互式绘图工具:

% 绘图工具打开方式
% 单击"显示绘图工具和停靠图形"按钮
% 或输入命令plottools启动绘图工具
% 可以直接添加标签,标题,箭头、改变颜色等,甚至生成代码,十分方便


% ①图形选项版:
% 新子图面板:
% 变量面板:
% 注释面板:
% ②绘图浏览器 
% ③属性编辑器

% 图形窗口菜单和工具栏

%绘图选项卡,选中变量进行操作

% 生成所需变量
x=linspace(0,2*pi,100);
y=sin(x);
y1=sin(x);
y2=sin(0.5*x);
y3=sin(2*x);
[u,v]=meshgrid(0:0.1:2,1:0.1:3);
h=(u-1).^2+(v-2).^2-1;
[X,Y,Z]= cylinder(0:0.2:2,30);

猜你喜欢

转载自blog.csdn.net/qq_36502291/article/details/81207914