MATLAB绘图

目录

函数注释

常用绘图函数

函数 功能
plot 建立向量或矩阵的图形
line 将数组中各点用线段链接起来
semilogx x轴用于对数标度,y轴线性标度绘制图形
semilogy y轴用于对数标度,x轴线性标度绘制图形
loglog x,y轴都取对数标度建立图形
plotyy 在图形左右侧同时建立纵坐标轴
subplot 在一个图形窗口中同时显示多个坐标轴图形


常用的绘图选项

选项 含义 * 选项 含义
- 实线 * . 用点号标出数据点
- - 虚线 * O 用圆圈标出数据点
点线 * x 用x号标出数据点
-. 点画线 * + 用加号标出数据点
r 红色 * s 用小正方形标出数据点
g 绿色 * D 用菱形标出数据点
b 蓝色 * V 用下三角标出数据点
y 黄色 * ^ 用上三角标出数据点
m 洋红 * < 用左三角标出数据点
c 青色 * > 用右三角标出数据点
w 白色 * H 用六角形标出数据点
k 黑色 * P 用五角形标出数据点
* 用星号标出数据点

常用属性

属性名 含义
LineWidth 设置线的宽度
MarkerEdgeColor 设置标记点的边缘颜色
MarkerSize 设置标记点的大小
MarkerFaceColor 设置标记点的填充颜色


常用坐标控制指令

坐标轴控制命令 解释
axis auto 使用缺省设置
axis manual 是当前坐标范围不变
axis off 不显示坐标轴
axis on 显示坐标轴
axis ij 坐标轴原点在左上方
axis xy 坐标轴原点在左下方
axis([x1,x2,y1,y2]) 设定坐标轴范围
axis equal 纵、横 坐标等长刻度
axis image 纵横坐标等长刻度,坐标轴紧贴数据轮廓
axis square 产生方形坐标系
axis 缺省矩形坐标系



绘制二维曲线

Plot函数调用格式:

1
plot(x,y,'linspec','propertyname',propertyvalue)

其中x,y为长对相同的向量,分别用于存储x坐标y坐标数据。

  • 在-1<=x<=1区间内,绘制曲线y=2e-2x
    1
    2
    3
    4
    5
    x=-1:0.1:1;
    y=2*exp(-2*x);
    plot(x,y,'md');
    grid on;
    xlabel('x');yabel('y');
    · 其中xlabel,ylabel均为为X,Y坐标轴添加注释;
    输出效果:
    3-1


通过函数公式绘制函数图像

1
2
f=@(x)x .* sin(x) .* cos(2 * x) - 2 * x .* sin(3 * x)
ezplot(f,[0,0.1,30])

3-19

Line函数调用格式:

1
line(X,Y,Z,'LW','MFC')
  • 利用line函数绘制线型
    1
    2
    3
    t=0:pi/20:2*pi;
    hline1=plot(t,sin(t),'k');
    hline2=line(t+0.6,sin(t),'LineWidth',4);
    3-4


plotyy函数调用格式:

1
plotyy(x1,yi,x2,y2,fun1,fun2)
  • 用不同标度在同一坐标系中绘制曲线y1=200e-0.05xsinx 以及 y2=0.8e-0.5xsin10x
    1
    2
    3
    4
    x=0:0.01:20;
    y1=200*exp(-0.05*x).*sin(x);
    y2=0.8*exp(-0.5*x).*sin(10*x);
    plotyy(x,y1,x,y2)
    输出效果:
    3-2


条形图—bar函数

1
2
3
4
5
6
7
x=-2.9:0.2:2.9;
subplot(1,2,1);bar(x,exp(-x.*x),'r');
xlabel(x);ylabel(',exp(-x.*x)');
title('垂直条形图');
subplot(1,2,2);barh(x,exp(-x.*x),'y');
xlabel(x);ylabel(',exp(-x.*x)');
title('水平条形图');
  • bar:以x轴为横坐标,y轴为纵坐标;
  • barh:以y轴为横坐标,x轴为纵坐标;
  • 括号内可添加(width/style/bar_color/Name/Value/axes_handle)
    3-3



直方图—histogram函数

1
2
3
4
5
x = -4:0.1:4;
y = randn(10000,1);
histogram(y,x)
h = findobj(gca,'Type','Histogram');
set(h,'FaceColor','r','EdgeColor','b') % 设置边界和填充颜色

3-5



饼状图—pie函数

1
2
3
4
5
6
7
    X=[19.3 21.6 51.6;34.2 70.3 82.4;61.4 82.9 90.8;50.5 54.9 59.1;29.4 36.3 3.47]
x=sum(X);
explode=zeros(size(x));
[c,offest]=max(x);
explode(offest)=1;
h=pie(x,explode);
colormap summer

3-6



极坐标图—polar函数

1
2
3
4
theta=0:0.01:2*pi;
rho=2-2*sin(theta);
figure
polar(theta,rho,'r--')

· theta:极角;rho:极径
· polar(theta,rho,LineSpec):用LineSpec来指定极坐标图像中绘图的符号及颜色

3-7



误差条形图—errorbar函数

1
2
3
4
5
6
x=0:pi/10:pi;
y=sin(x);
e=std(y)*ones(size(x));
figure
errorbar(x,y,e)

3-8

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
% 误差相同情况
x = 1:10:100;
y = [20 30 45 40 60 65 80 75 95 90];
err = 8*ones(size(y));
subplot(2,2,1);
errorbar(x,y,err)
% 误差变化情况
x = 1:10:100;
y = [20 30 45 40 60 65 80 75 95 90];
err = [5 8 2 9 3 3 8 3 9 3];
subplot(2,2,2);
errorbar(x,y,err)

% 水平方向误差
x = 1:10:100;
y = [20 30 45 40 60 65 80 75 95 90];
err = [1 3 5 3 5 3 6 4 3 3];
subplot(2,2,3);
errorbar(x,y,err,'horizontal')
% 双方向误差
x = 1:10:100;
y = [20 30 45 40 60 65 80 75 95 90];
err = [4 3 5 3 5 3 6 4 3 3];
errorbar(x,y,err,'both')
% 双方向误差,没有线情况
x = 1:10:100;
y = [20 30 45 40 60 65 80 75 95 90];
err = [4 3 5 3 5 3 6 4 3 3];
subplot(2,2,4);
errorbar(x,y,err,'both','o')

3-16



火柴杆图stem函数

1
2
3
4
5
x=0:25;
y=[exp(-.07*x).*cos(x);exp(.05*x).*cos(x)]';
h=stem(x,y);
set(h(1),'MarkerFaceColor','blue')
set(h(2),'MarkerFaceColor','red','Marker','square')

3-17



阶梯图stairs函数

1
2
3
4
5
X=linespace(0,1,30)';
Y=[cos(10*x),exp(X).*sin(10*X)];
h=stairs(X,Y);
set(h(1),'Marker','o','MarkerSize',4)
set(h(2),'Marker','o',MarkerFaceColor','m')

3-9



特殊函数调用

Fplot函数

  fplot函数根据函数的表达式自动调整自变量的范围,无需给函数赋值,直接生成反应函数变化规律的图形,在函数变化快的区域,采用小间隔,否则采用大的坐标间隔,使绘制的图形的计算量与时间最小,而又能尽可能精确的反应图形的变化。fplot函数一般在对横坐标的取值间隔没有明确的要求,仅查看函数大致的变化规律的情况下使用,函数的调用格式如下:

1
2
 a=@(x) sin(x^exp(x));
fplot(a,[0,1.8])

· @(x):定义自变量
· fplot(函数名,取值范围)
效果:
3-10



ezplot函数

  采用ezplot函数绘制二元函数图像。该函数不仅能够绘制显函数图像,还能绘制隐函数图像。

  • 绘制{x=cos5t y=sin3t},t(0,2pi)与隐函数5x2+25y2=6的图形。
    1
    2
    3
    4
    5
    6
    subplot(2,1,1);
    ezplot('cos(5*t)','sin(3*t)',[0,2*pi])
    grid on;
    subplot(2,1,2);
    ezplot('5*x^2+25*y^2=6',[-1.5,1.5,-1,1])
    grid on;
    3-11


绘制小幅一图多像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
% 同时绘制变量dv1-dv4的柱状分布图
figure
subplot(2,2,1);
hist(X(:,2));
title('dv1柱状分布图','fontsize',12)
subplot(2,2,2);
hist(X(:,3));
title('dv2柱状分布图','fontsize',12)
subplot(2,2,3);
hist(X(:,4));
title('dv3柱状分布图','fontsize',12)
subplot(2,2,4);
hist(X(:,5));
title('dv4柱状分布图','fontsize',12)

3-12



绘制三维曲线


空间曲线—plot3函数

1
2
3
4
5
x=20*t;
z=100-0.5*9.781*t.^2;
y=3*t;
plot3(x,y,z,'rD');
grid on;

3-12


网格图—meshgrid函数

1
2
3
4
5
6
figure(3)
x=linspace(-2,2,500)
y=linspace(-2,2,500)
[xx,yy]=meshgrid(x,y)
zz=xx.*exp(-xx.^2-yy.^2)
mesh(xx,yy,zz)

3-13


三位网格及等高线—peaks 函数

1
2
3
4
5
figure
[X,Y] = meshgrid(-3:0.0125:3);
Z = peaks(X,Y);
meshc(X,Y,Z);
axis([-3 3 -3 3 -10 10])

3-18