matlab绘图功能的使用

matlab绘图功能的使用

matlab除了具有强大的矩阵运算能力,在绘图方面也有得天独到的优势。

  • 饼图的绘制
clf
x = [1 3 0.5 2.5 2];
explode = [0 1 0 0 0];%非零块突出
pie(x,explode)
colormap winter
  • 频率分布直方图
clf
x = -4:0.1:4;
y = randn(10000,1);%产生一个10000行1列的标准正态矩阵
hist(y,x) 
h = findobj(gca,'Type','patch');%修改显示类型
set(h,'FaceColor','r','EdgeColor','w')%h表示句柄
  • 调色和添加灯光
clf
x = -4:0.1:4;
y = randn(10000,1);%产生一个10000行1列的标准正态矩阵
hist(y,x) 
h = findobj(gca,'Type','patch');%修改显示类型
set(h,'FaceColor','r','EdgeColor','w')%h表示句柄
  • 绘图视角控制
clf
[X,Y,Z] = peaks(30);  
subplot(1,2,1),surf(X,Y,Z) view(3) %默认的二维视角 subplot(122),surfc(X,Y,Z)%底面多一个等值线图 view(30,60) 
  • 表面图去网格和三维等值
[X,Y] = meshgrid([-2:.25:2]); %生成维数相同的两个矩阵X,Y,一个向量当两个用
Z = X.*exp(-X.^2-Y.^2);
contour3(X,Y,Z,40) %绘制Z的等高线,40为等高线的数目
surface(X,Y,Z,'EdgeColor',[.8 .8 .8],'FaceColor','none')%绘制表面图
grid off %去掉网格线
view(-15,25)%设定视角
colormap cool %建立颜色图
figure
mesh(X,Y,Z)
  • 罗盘图
Z = eig(randn(20,20));  %求20*20随机矩阵的特征值
compass(Z)
  • 等高线标值和二维插值
clf
Z = peaks;
[C,h] = contour(interp2(Z,4));%插值使其更光滑,更密集,返回等值线向量C和等值线句柄h
text_handle = clabel(C,h);%标出等值线数值
set(text_handle,'BackgroundColor',[1 1 .6],...
    'Edgecolor',[.7 .7 .7])%对数值的背景颜色边缘颜色的设置
  • 等值矢量梯度控制
clf
clc
clear
[X,Y] = meshgrid(-2:.2:2);              % 生成网格数据,x是每列一样,列上递增,y相反
Z = X.*exp(-X.^2 - Y.^2);                % 定义函数Z
[DX,DY] = gradient(Z,.2,.2);             % 求Z在X和Y方向的梯度
contour(X,Y,Z)% 绘制Z的等高线
hold on % 打开图形保持
quiver(X,Y,DX,DY)
colormap hsv                     % 创建颜色图
hold off                            % 关闭图形保持
  • 空间平面法向量和三维矢量
clf
clc
clear
[X,Y] = meshgrid(-2:.2:2);              % 生成网格数据,x是每列一样,列上递增,y相反
Z = X.*exp(-X.^2 - Y.^2);                % 定义函数Z
[DX,DY] = gradient(Z,.2,.2);             % 求Z在X和Y方向的梯度
contour(X,Y,Z)% 绘制Z的等高线
hold on % 打开图形保持
quiver(X,Y,DX,DY)
colormap hsv                     % 创建颜色图
hold off                            % 关闭图形保持
  • 离散数据图
clf
t = linspace(-2*pi,2*pi,10); %创建10个位于-2*pi2*pi之间的等间隔的数
h = stem(t,cos(t),'fill','--');%以'--'绘制离散数据图,同plot多一条垂直坐标轴的线
set(get(h,'BaseLine'),'LineStyle','-.')%修改基本线
set(h,'MarkerFaceColor','red')%修改点的颜色为红色
  • 矢量分布图
clf
theta = (-90:10:90)*pi/180; %生成数据
r = 2*ones(size(theta));  %生成与theta相同宽度和高度的矩阵,十九个2
[u,v] = pol2cart(theta,r);%将极坐标数据theta和r转换成直角坐标u,v
feather(u,v);%根据所给坐标画出向量,在平移到等分处

  • 直方图的控制
Y = round(rand(5,3)*10); %随机产生一个5*3矩阵,每个元素为1-10之间的整数
subplot(2,2,1)       %设定绘图区域,在图形对象的左上角绘制
bar(Y,'group')       %绘制纵向条形图,画第一列分开,第二列分别挨着第一列相应的,每一列颜色相同
title 'Group'        %添加标题Group
subplot(2,2,2)       %在图形对象的右上角绘制
bar(Y,'stack')%堆积模式
title 'Stack'
subplot(2,2,3)       %在图形对象的左下角绘制
barh(Y,'stack')      %barh绘制横向条形图
title 'Stack'
subplot(2,2,4)       %在图形对象的右下角绘制
bar(Y,7.5)
title 'Width = 7.5'

  • 画图指令,鼠标点选插入文本位置
%% clc,clear,close all,clf; y=[ 102.4 102.8 103.1 102.9 103.3 103.5 103.6 104.4 105.1 104.6 104.9 104.9 105.4 105.2 105.9 106.1 105.7 106.8 107.5 108 110.1 117.1 109.6 110.3 111 111.7];%%
plot(1:13,y'); figure(gcf); grid on; axis([0,14,90,120])%设置长宽范围 legend('居民消费价格指数(以上年同期价格为100','城市食品零售价格指数(上年同月=100') gtext('资料来源:中国国家统计局网站')%按光标位子送字 
  • 球体控制
subplot(2,2,1) sphere(8) axis equal subplot(2,2,2) sphere(16) axis equal subplot(2,2,3) sphere(24) axis equal subplot(2,2,4) sphere(32) axis equal
  • 椭圆加标签
th = [0:pi/50:2*pi]';
a = [0.5:.5:4.5];
X = cos(th)*a;
Y = sin(th)*sqrt(25-a.^2);
plot(X,Y),axis('equal'),xlabel('x'), ylabel('y')
title('A set of Ellipses')
  • 梯状图
x = linspace(-2*pi,2*pi,40); %创建40个位于-2*pi到2*pi之间的等间隔的数
stairs(x,sin(x))                %绘制正弦曲线的二维阶跃图形,把直方图变阶梯
  • 指定位置添加文本
clf;clear
t=0:pi/50:2*pi;
y=sin(t);plot(t,y);
axis([0,2*pi,-1.2,1.2])%控制坐标轴上下限
text(pi/2,1.02,...
'\fontsize{16}\leftarrow\fontname{隶书}在\pi/2\fontname{隶书}处\itsin(t)\fontname{隶书}极大值')
%添加文本,\fontsize{}表示字号,leftarrow表示箭头,fontname{}表示字体,\it表示斜体字
  • 开辟子图,大小可控
clf;clear
t=(pi*(0:1000)/1000)'; y1=sin(t);y2=sin(10*t);y12=sin(t).*sin(10*t); subplot(2,2,1),plot(t,y1);axis([0,pi,-1,1]) subplot(2,2,2),plot(t,y2);axis([0,pi,-1,1]) subplot('position',[0.2,0.05,0.6,0.45]) %左底距离,宽高。
plot(t,y12,'b-',t,[y1,-y1],'r:');axis([0,pi,-1,1])%同一个x对应两个y那个y可以用一个数组表示
  • 一图多形,双纵坐标显示
clear
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');%plotyy控制左右双坐标显示
pause(3)
set(get(AX(1),'Ylabel'),'String','Slow Decay') 
pause(3)
set(get(AX(2),'Ylabel'),'String','Fast Decay') %set控制两边纵坐标名的显示
xlabel('Time (\musec)') %\mu表示转义,变成数学是的mu
title('Multiple Decay Rates') 
pause(3)
set(H1,'LineStyle','--')%改变线型
set(H2,'LineStyle',':')
  • 复平面绘图
clear
t=linspace(0,2*pi,80)'; %0到2pi分成80个,转置成一列 X=[cos(t),cos(2*t),cos(3*t)]+i*sin(t)*[1, 1, 1]; %(80x3)的复数矩阵 plot(X) %每列一线在复平面上 axis square %变成四方规格 legend('1','2','3')
  • 坐标轴控制命令
t=0:2*pi/99:2*pi;
x=1.15*cos(t);y=3.25*sin(t); %
subplot(2,3,1),plot(x,y),axis normal,grid on, title('Normal and Grid on') subplot(2,3,2),plot(x,y),axis equal,grid on,title('Equal') subplot(2,3,3),plot(x,y),axis square,grid on,title('Square') subplot(2,3,4),plot(x,y),axis image,box off,title('Image and Box off') subplot(2,3,5),plot(x,y),axis image fill,box off title('Image and Fill') subplot(2,3,6),plot(x,y),axis tight,box off,title('Tight')%box off表示图形不被框起来,axis image表示紧贴,tight表示相切
  • 句柄控制
figure
for i=1:12
    subplot(12,1,i)
    plot (sin(1:100)*10^(i-1))
    set(gca,'xtick',[],'ytick',[])
end
% Reset the bottom subplot to have xticks,重置坐标标记为空值
set(gca,'xtickMode', 'auto')%gca表示获取当前坐标粥的句柄,在最后一个图添加底部坐标
  • 单参数区域图绘制
clc
clear
clf
Y = [1, 5, 3;
    3, 2, 7;
    1, 5, 3;
    2, 6, 1];
area(Y)
grid on
colormap summer%调色调的。
set(gca,'Layer','top')%表顶外层加网格
title 'Stacked Area Plot'
  • 区域分块绘图
t1=(0:11)/11*pi;
y1=sin(t1).*sin(9*t1);
t2=(0:100)/100*pi,y2=sin(t2).*sin(9*t2);%在同一行中,两条之间要用逗号隔开
subplot(2,2,1),plot(t1,y1,'r.'),axis([0,pi,-1,1]),title('子图 (1)')%axis标识图的上下左右限值; subplot(2,2,2),plot(t2,y2,'r.'),axis([0,pi,-1,1]),title('子图 (2)') subplot(2,2,3),plot(t1,y1,t1,y1,'r.') axis([0,pi,-1,1]),title('子图 (3)') subplot(2,2,4),plot(t2,y2) axis([0,pi,-1,1]),title('子图 (4)')
  • 函数描点
n=0:12;
y=1./abs(n-6);
plot(n,y,'r*','MarkerSize',20)
grid on%网
  • 修改横纵坐标标记的位置
clear
t = 0:pi/20:2*pi;
plot(t,sin(t),'-.r*')
hold on
plot(t,sin(t-pi/2),'--mo')
plot(t,sin(t-pi),':bs')
hold off
pause(3)
set(gca,'Xtick',[pi/2,pi,pi*3/2,2*pi],'Ytick',[-1,-0.5,0,0.5,1])%修改横纵坐标标志
grid on
box off

  • 三维饼图
x=rand(1,5);   %产生一个含有50~1之间的随机数构成的向量
explode=[0 1 0 0 0];  %分离出向量x的第二个元素
pie3(x,explode)
  • 三维直方图
X=rand(5,5)*10;  %产5*5矩阵,其中每个元素为1~10之间的随机数
subplot(221),bar3(X,'detached'),title('detached');%按矩阵位置绘图
subplot(222),bar3(X,'grouped'),title('grouped');
subplot(223),bar3h(X,'stacked'),title('stacked');
subplot(224),bar3h(X,'detached'),title('detached');
  • 三维曲面绘图未填充
x=-4:.2:4;y=x;
[X,Y]=meshgrid(x,y); 
Z=X.^2+Y.^2;
mesh(X,Y,Z)
[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);%在X,Y出取peak函数
meshc(X,Y,Z);%meshc线圈轮廓图带底面
axis([-3 3 -3 3 -10 5])
  • 三维曲面绘图
[X,Y,Z] = peaks(30);%返回30x30的高斯矩阵(面)
surfc(X,Y,Z)%绘制曲面图 colormap hsv axis([-3 3 -3 3 -10 5])
  • 三维曲线绘图
[X,Y,Z] = peaks(30);%返回30x30的高斯矩阵(面)
surfc(X,Y,Z)%绘制曲面图 colormap hsv axis([-3 3 -3 3 -10 5])
  • plot修饰命令
clear
t = 0:pi/20:2*pi;
plot(t,sin(t),'-.r*')%‘’中表示点型和线型
hold on
plot(t,sin(t-pi/2),'--mo')%m是品红色
plot(t,sin(t-pi),':bs')%:点线,s是正方形
hold off
plot(t,sin(2*t),'-mo',...
                'LineWidth',2,...
                'MarkerEdgeColor','k',...
                'MarkerFaceColor',[.49 1 .63],...
                'MarkerSize',12)%plot修饰命令
  • loglog的使用

clc
clear
clf
x = logspace(-1,2);%相当于10^a:10^[(b-a)/(n-1)]:10^b
loglog(x,exp(x),'-s')%s表示正方形

hold on;

plot(log(x),log(exp(x)),'-k*')
grid on

早上起得比较,有些绘图的指令的名称记不大清了,小编就其功能瞎命名了,见怪不怪哈!

你可能感兴趣的:(matlab绘图功能的使用)