MATLAB 二维绘图

1 MATLAB的二维绘图

1.1 xy平面基本绘图命令

plotx轴和y轴均为线性刻度
loglogx轴和y轴均为对数刻度
semilogxx轴为对数刻度,y轴为线性刻度
semilogyx轴为线性刻度,y轴为对数刻度
figure生成新的图形窗口

例子:

xd = [1, 5, 50];
yd = [30, 5, 5];
loglog(xd, yd, 'blacko-', 'MarkerFaceColor', [1, 0, 0]);
axis([10^0 10^2 10^0 10^2]);
grid on;axis equal
画多条曲线图
x=0:0.1:2*pi;
plot(x,sin(x),'ro',x,cos(x),'g*');

在这里插入图片描述

分割图形窗口

调用格式为:subplot(n,m,k)subplot(nmk)
n,m分别表示将窗口分割的行数和列数,k表示要画图部分的代号,表示第几个图形,nmk三个数可以连写,中间不用符号分开。
特殊情况:subplot(n,m,[a,b])

1.2 绘制图形的辅助操作

线型、标记符、颜色
线型说明标记符说明颜色说明
-实线(默认)+加号符r红色
- -双划线o空心圆g绿色
虚线*星号b蓝色
-.点划线.实心圆c青绿色
x叉号符m洋红色
s正方形y黄色
d菱形k黑色
^上三角形w白色
v下三角形
<左三角形
>右三角形
p五角星
h六边形
线宽、标记点、字体等属性
LineWidth线宽数值,如0.5,1等,单位为points
MarkerEdgeColor标记点边框线条颜色颜色字符,如’g’, ’b’等
MarkerFaceColor标记点内部区域填充颜色颜色字符
MarkerSize标记点大小数值
FontName字体名称
FontSize字号大小
FontAngle字体角度‘normal’–正常;‘italic’–斜体;‘oblique’–倾斜;
FontWeight字体的轻重‘light’–减轻;‘normal’–正常;‘bold’–加粗
Box属性决定图形坐标轴是否为方框形式‘on’(有方框);‘off’(无方框)
'ColorOrder’属性设置多条曲线的颜色顺序默认值为:[1 1 0;1 0 1;0 1 1;1 0 0;0 1 0;0 0 1]黄色 粉色 天蓝 红色 绿色 兰色,还有:[1 1 1]–白色;[0 0 0]–黑色
坐标轴方向属性‘Xdir’,‘Ydir’,‘Zdir’‘normal’–正常;‘reverse’–反向
坐标轴颜色属性‘Xcolor’,‘Ycolor’,‘Zcolor’颜色字符
坐标轴网格属性‘Xgrid’,‘Ygrid’,‘Zgrid’‘on’,‘off’
坐标轴的标尺属性‘Xtick’,‘Ytick’,‘Ztick’标度的位置,值为向量
‘Xticklabel’,‘Yticklabel’,‘Zticklabel’轴上标度的符号,值与标度位置向量个数相同
图形设置

❥图形保持

hold on;

❥图形的网格

grid on %显示格线
grid off %关闭格线
grid %在两种状态之间切换

❥图形的图例

legend('y = sin(x)','y = cos(x)',……,pos);

pos指定图例框显示的位置:0–取最佳位置;1–右上角(缺省值);2–左上角;3–左下角;4–右 下角;-1–图的右侧。

❥图形的说明文字

A.text函数:按指定位置在坐标系中写出说明文字

text(x1,y1,'字符串','选项');

选项’决定x1,y1的坐标单位,如没有选项,则x1,y1的坐标单位和图中一致。

B.gtext函数:按照鼠标点按位置写出说明文字

gtext('字符串');
坐标轴设置

❥坐标轴的控制

axis off %隐去坐标轴
axis on %显示坐标轴

❥坐标轴的说明

xlabel('Input Value'); %x轴注解
ylabel('Function Value'); %y轴注解

❥坐标轴的标题

title('Two Trigonometric Functions'); %标题

❥坐标轴刻度设置

set(gca,’XTick’,[0 1 2]);  %X坐标轴刻度数据点位置
set(gca,'XTickLabel',{'a','b','c'});  %X坐标轴刻度处显示的字符

❥坐标轴范围设置

axis([xmin xmax ymin ymax]); %设置坐标轴在指定的区间
axis auto %使用默认设置
axis manual %冻结当前坐标轴范围,以后叠加绘图都在当前坐标轴范围内显示
axis tight %采用紧密模式设置当前坐标轴范围

❥坐标轴比例设置

axis equal %等比例坐标轴
axis square %将坐标轴区域调整为正方形
axis normal %自动调整纵横轴比例,使当前坐标轴范围内的图形显示达到最佳效果

范围选项和比例设置可以联合使用,默认的设置为axis auto normal

❥坐标轴边框设置

box on; %显示边框
box off; %关闭边框
box; %切换状态

❥坐标轴位置设置
x轴位置:

set(gca,'XAxisLocation','bottom'); %将x轴的位置设置在底部(默认)。
set(gca,'XAxisLocation','top'); %将x轴的位置设置在顶部。
set(gca,'XAxisLocation','origin'); %将x轴的位置设置在y=0处。

y轴位置:

set(gca,'YAxisLocation','left'); %将y轴的位置设置在左边(默认)。
set(gca,'YAxisLocation','right'); %将y轴的位置设置在右边。
set(gca,'YAxisLocation','origin'); %将y轴的位置设置在x=0处。

❥坐标轴方向设置
x轴方向:

set(gca,'XDir','normal'); %将x轴方向设置为普通(从左到右递增)。
set(gca,'XDir','reverse'); %将x轴方向设置为反向(从右到左递增)。

y轴方向:

set(gca,'YDir','normal'); %将y轴方向设置为普通(从下到上递增)。
set(gca,'YDir','reverse'); %将x轴方向设置为反向(从上到下递增)。
图形对象的修改

❥set函数:用于设置句柄所指的图形对象的属性。

格式为:set(句柄, 属性名1, 属性值1, 属性名2, 属性值2, ……)
例子:

h=plot(x,y);
set(h,'Color', [1,0,0]); %将句柄所指曲线的颜色设为红色

❥get函数:获取指定句柄的图形对象指定属性的当前值。

格式为:get(句柄,‘属性名’)
执行后可返回X轴的当前颜色属性值[0,0,0](黑色)。
例子:

get(gca,'Xcolor'); %获得X轴的当前颜色属性值

❥如果没有设置句柄,则可以使用下列函数获得。

gcf:获得当前图形窗口的句柄;
gca:获得当前坐标轴对象的句柄;
gco:获得当前对象的句柄。
例子:

t=-pi:pi/20:pi;
y=sin(t);
plot(t,y);
set(gca,'xtick',[-pi:pi/2:pi],'xticklabel',['-pi','-pi/2','0','pi/2','pi']); %设置坐标轴的显示刻度
set(gcf, 'Color', [1,1,1]); %将图形窗口底色设为白色
set(gca, 'Xcolor', [0,1,0]); %X轴的颜色设为绿色

例子:设置坐标轴字体名称,大小,角度,轻重的同时,也会设置坐标轴注解的字体;之后可以单独设置Y轴注解的字体名称,大小。

set(gca,'FontName','Times New Roman','FontSize',14,'FontWeight','bold','FontAngle','italic')
ylabel('前角(°)','FontName','宋体','FontSize',10.508)

对字体的设置也可以用在title,xlabel,ylabel等中。
例子:

a=linspace(1,2,10);
plot(a,'--pr','linewidth',1.5,'MarkerEdgeColor','r','MarkerFaceColor','m','MarkerSize',10);
legend('a','Location','best');
title('a','FontName','Times New Roman','FontWeight','Bold','FontSize',16);
xlabel('T','FontName','Times New Roman','FontSize',14);
ylabel('a','FontName','Times New Roman','FontSize',14,'Rotation',0);
axis auto equal
set(gca,'FontName','Times New Roman','FontSize',14);

1.3 其他二维绘图函数

函数说明
bar长条图
errorbar图形加上误差范围
fplot较精确的函数图形
polar极座标图
hist累计图
rose极座标累计图
stairs阶梯图
stem针状图
fill实心图
feather羽毛图
compass罗盘图
quiver向量场图
pie饼图

❥长条图bar

bar绘制二维竖直直方图
bar3绘制三维竖直直方图
barh绘制二维水平直方图
bar3h绘制三维水平直方图

调用格式为:

bar(x,y); 或 bar(y); %默认条形类型为分组  
bar(x,y,width); 或 bar(y,width); %指定每个直方条的宽度,如width>1,则直方条会重叠,默认值为width=0.8
bar(…,'grouped'); %使同一组直方条紧紧靠在一起
bar(…,'stack'); %把同一组数据描述在一个直方条上

例子:

x=1:10;   
y=rand(size(x));   
subplot(221);bar(x,y);%默认条形类型为分组  
y=[9 8 6;2 5 8;6 2 9;5 8 7;9 4 2];
subplot(222);bar(y);%竖直直方图
subplot(223);barh(y);%水平直方图
subplot(224);bar(y,'stack');%'stack'制定条形类型为叠加
colormap(cool);%将当前颜色映象色调改为cool

在这里插入图片描述
❥图形加上误差范围errorbar

调用格式为:

errorbar(B,X); %X为误差
errorbar(A,B,X); %X为误差
errorbar(A,B,X,Y); %X为负向误差,Y为正向误差

例子:

T=1:1:6;  %月份
A=[12,11,7,7,6,5];  %A地各月的平均值
V=[0.5,0.4,0.3,1,0.3,0.5];  %A地各月的方差值
A2=[10,8,5,4,3,3];  %B地各月的平均值
V2=[0.4,0.3,0.4,0.6,0.3,0.5];    %B地各月的方差值
subplot(121);errorbar(T,A,V,'r-o'); 
hold on;errorbar(T,A2,V2,'b-s');  %注意'-o'中的‘-’去掉后画出来的图是各个孤立的点
xlabel('月份');ylabel('降雨量/cm');
Vp=[0.3,0.6,0.5,0.5,0.3,0.2]; %A地各月的正向方差
Vn=[0.5,0.5,0.3,1,0.5,0.4];   %A地各月的负向方差
subplot(122);errorbar(T,A,Vn,Vp,'linewidth',2);
xlabel('月份');ylabel('降雨量/cm');

在这里插入图片描述
❥较精确的函数图形fplot

函数特点:

绘图的数据点是自适应产生的。在函数平坦处,所取数据点比较稀疏;在函数变化剧烈处,将自动取较密的数据点。

调用格式为:

fplot(fun,limits,tol,linespec);
fun:函数名,可以是MATLAB已有函数、自定义的M函数或字符串定义的函数。
limits:表示绘制图形的坐标轴取值范围,有两种方式:[xminxmax]和[xminxmaxyminymax]。
tol:相对误差,默认值为2e-3。
linespec:表示图形的线型、颜色和数据点等设置。

例子:

x=-1:0.1:1; %定义域取值范围和步长
fplot('sin(1./x)',[0.02 0.2]); %[0.02 0.2]是绘图范围

在这里插入图片描述
❥极座标图polar

调用格式为:

polar(theta,rho,选项); %theta为极坐标极角,rho为极径,选项的内容和plot函数相似

例子:

theta=0:0.01:2*pi;  
r=cos(4*theta);   
polar(theta,r,'b');

在这里插入图片描述
❥累计图hist

对于大量的资料,我们可用hist来显示资料的分情况和统计特性。
调用格式为:

hist(x); %x是一维向量,函数的作用是将x中的最小和最大值之间的区间等分成10等份,输出的直方图横坐标是x值,纵坐标是该值的个数
[a,b]=hist(x,n); %其中x是一维向量,函数功能是将x中的最小和最大值之间的区间等分n份,横坐标是x值,纵坐标是该值的个数。返回的a是落在该区间内的个数,b是该区间的中心线位置坐标。

例子:

x=[1,2,3,4,5,6,1,2,5,4,7,8,5,6,4,6];
subplot(121),hist(x);
x=randn(200, 1); %产生5000个m=0,s=1的高斯乱数  
subplot(122),hist(x,15); %20代表长条的个数

在这里插入图片描述
❥极座标累计图rose

rose和hist很接近,只不过是将资料大小视为角度,资料个数视为距离,并用极座标绘制。
例子:

x=randn(1000, 1);  
rose(x); 

在这里插入图片描述
❥阶梯图stairs

调用格式为:

stairs(Y);
stairs(X,Y);

例子:

x=linspace(-2*pi,2*pi,40);
subplot(211),stairs(x,sin(x))
hold on;plot(x,sin(x),':*');
rng('default');
n=rand(1,10);
subplot(212),stairs(n);

在这里插入图片描述
❥针状图stem

stem(X,Y)绘制二维针状图
stem3(X,Y,Z)绘制三维针状图

调用格式为:

stem(Y); %将数据序列Y从x轴到数据值按照茎状形式画出,以圆圈终止。如果Y是一个矩阵,则将其每一列按照分隔方式画出。
stem(X,Y); %在X的指定点处画出数据序列Y
stem(...,'filled'); %以实心的方式画出茎秆
stem(...,'LINESPEC'); % 按指定的线型画出茎秆及其标记

例子:

x=0:0.2:10;  
y=sin(x).*exp(-x/3);  
subplot(221),stem(x,y); %绘制二维针状图
subplot(222),stem(x,y,':sr'); %改变线型、标记点形状和颜色
subplot(223),stem(x,y,'fill');%填充颜色
A=[1,2,3;4,6,7];
subplot(224),stem3(A); %绘制三维针状图

在这里插入图片描述
❥实心图fill

fill绘制二维填充图
fill3绘制三维填充图

调用格式为:

fill(X,Y,C); %创建填充多边形顶点的颜色从C中指定的X和Y的数据是一个向量或矩阵用于作为颜色表索引。如果C是一个行向量,长度(C)必须大小相等的(x,2)和大小(Y,2);如果C是一个列向量,长度(C)必须大小相等的(x,1)和大小(Y,1)。如果有必要,填充闭合多边形的顶点连接最后一。
fill(X,Y,ColorSpec); %二维多边形填充指定的X和Y与指定的colorspec颜色
fill(X1,Y1,C1,X2,Y2,C2,...); %指定多个二维填充区域
fill(...,'PropertyName',PropertyValue); %允许您指定一个补丁的图形对象的属性的名称和值。
h=fill(...); %返回一个向量处理图形对象的补丁,每个补丁的对象一柄
fill3(X,Y,Z,C)
fill3(X,Y,Z,ColorSpec)
fill3(X1,Y1,Z1,C1,X2,Y2,Z2,C2,...)
fill3(...,'PropertyName',PropertyValue)
fill3(ax,...)
h=fill3(...)

例子:

x=-2*pi:pi/100:2*pi;
y=sin(x);
subplot(121),fill(x,y,'g');%绘制二维填充图
axis([-7,7,-1.5,1.5])
hold on;
fill([0:pi/100:pi],sin([0:pi/100:pi]),'r');
fill([-2*pi:pi/100:-pi],sin([-2*pi:pi/100:-pi]),'r');
hold off
X=[0;1;1;0];
Y=[1;1;0;0];
Z=[1;1;0;0];
subplot(122),fill3(X,Y,Z,[0.1 0.2 0.3]);%绘制三维填充图

在这里插入图片描述
❥羽毛图feather

调用格式为:

feather(x,y) 函数绘制由向量参量x与y构成的速度向量,沿水平轴方向,从均匀间隔点以箭头发射出来;
feather(z) 函数绘制羽毛图。参量z是一个复数,则feather(z)相当于compass(real(z),imag(z));
feather(...,LineSpec) 函数绘制羽毛图。参量LineSpec指定的线型、标记符号、颜色等属性画出羽毛图; 
H = feather(...) 函数返回羽毛图中线型对象的句柄H。

例子:

theta=linspace(0, 2*pi, 20);  
z = cos(theta)+i*sin(theta);  
subplot(211),feather(z);
theta=-pi/2:pi/16:pi/2;
r=2*ones(size(theta));
[u,v]=pol2cart(theta,r);%把极坐标(柱坐标)转换为笛卡尔坐标(指平面直角坐标或空间直角坐标)。
subplot(212),feather(u,v);

在这里插入图片描述
❥罗盘图compass

调用格式为:

compass(x,y); %函数绘制一个由原点出发由(x,y)组成的向量箭头图形;
compass(z); %等价于compass(real(z),imag(z));
compass(...,LineSpec); %函数用参量LineSpec指定箭头的线型、标记符号、颜色等属性;
h=compass(...); %函数返回line对象的句柄给h。

例子:

theta=linspace(0,2*pi,20); 
z=cos(theta)+i*sin(theta);  
subplot(121),compass(z,'-.r');    
x=1:100;
y=rand(1,100);
subplot(122),compass(x,y);

在这里插入图片描述
❥向量场图quiver

调用格式为:

quiver(x,y,u,v); %用来绘制二维方向箭头,表示通过在(x, y)指定的位置绘制小箭头来表示以该点为起点的向量(u,v)。x,y,u,v必须是相同阶数。
quiver(u,v); %在x-y面上绘制向量(u,v),由于没有指定向量的起点,所以,matlab将在x-y面上均匀的取若干个点作为起点。

例子:

u=[1 1 1; 1 1 1];v=u;
subplot(121),quiver(u, v);
x=[0 0 0 0];y=x;%指定起点为(0,0)
u=[1 0 -1 0];v=[0 1 0 -1];
subplot(122),quiver(x, y, u, v);

在这里插入图片描述
❥饼图pie

pie(X)绘制二维饼图
pie3(X)绘制三维饼图

调用格式为:

pie(X); %利用向量X中的数据描绘饼图,X中的数据被看做频数,饼图中比率的获得:X中的元素x[i]/sum(X)。当X中所有元素的和sum(X)< 1.0时,图形不是一个整圆。
pie(X,{'...', '...', ...}); %‘...’是标注。
pie(X,y); %将一些扇区从饼图中分离出来,y为一个与X尺寸相同的矩阵,其非零元素所对应X矩阵中的元素从饼图中分离出来。

例子:

x=[5.5 74.7 44.5 33.2 46.6];
subplot(231),pie(x); %不分离饼图
subplot(232),pie(x,{'1', '2', '3','4','5'}); %‘...’是标注。
subplot(233),pie(x,[0 0 0 0 1]);%分离饼图,将第五个元素分离出来
x1=[0.2 0.3 0.4];
subplot(234),pie(x1); %不完整饼图
x2=[1 2 4 3 5];
subplot(235),pie3(x2); %绘制三维饼图
subplot(236),pie3(x2,[0 1 0 1 0]); %将第二、四个元素分离出来

在这里插入图片描述

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值