天天看点

【Matlab】二维绘图总结

参考资料:

《Matlab编程及其应用第三讲》——陆伟

《Matlab 帮助文档》

文章目录

    • 1. 基本绘图函数:plot 函数。
    • 2. 功能:对 x x x 坐标及对应的 y y y 坐标绘图。
    • 3. plot函数的使用格式:
    • 4. 该函数对 x x x和 y y y的形式有一定的要求,不符合要求会报错,符合要求的形式见下表。
    • 5. 更改线条性质
      • (1)线型( L i n e S t y l e Line Style LineStyle )、点型( M a r k e r Marker Marker )和颜色( C o l o r Color Color)
      • (2)线宽( L i n e W i d t h LineWidth LineWidth)
      • 6. 加入说明文字
    • 7. 更改坐标轴性质
    • 8. 其他的一些函数
      • (1)hold 函数
      • (2)grid 函数
      • (3)plotyy 函数
      • (4)subplot 函数
      • (5)对复数进行绘图
    • 8. 写在最后

1. 基本绘图函数:plot 函数。

2. 功能:对 x x x 坐标及对应的 y y y 坐标绘图。

3. plot函数的使用格式:

plot(x, y, ...);
           

注:省略号部分可以补充图形的性质,随后讲解。

4. 该函数对 x x x和 y y y的形式有一定的要求,不符合要求会报错,符合要求的形式见下表。

x x x可能的形式 y y y可能的形式 绘图的效果
1 × n 1\times n 1×n 的矩阵 1 × n 1\times n 1×n 的矩阵 对 y y y绘图
1 × n 1\times n 1×n 的矩阵 m × n m\times n m×n的矩阵 用 x x x与 y y y的每个行向量绘图
m × n m\times n m×n的矩阵 m × n m\times n m×n的矩阵 用 x x x的每一个行向量与 y y y对应行向量绘图

特殊使用形式:只给出 y y y,不给出 x x x :

plot(y, ...);
           

这时,则会把 y y y的索引组成的矩阵当作 x x x进行绘图。

5. 更改线条性质

(1)线型( L i n e S t y l e Line Style LineStyle )、点型( M a r k e r Marker Marker )和颜色( C o l o r Color Color)

先上例子:

clear; clc;
	close all;
	t = 0 : pi/10 : 2*pi;
	x = t - 3;
	y = sin(t);
	z = cos(t);
	plot(t, x, '-r'); hold on;
	plot(t, y, '--g');
	plot(t, z, '*b');
	%上面两行也可以写作一行: plot(t, x, '-r', t, y, '--g', t, z, '*b');
           

绘图结果:

【Matlab】二维绘图总结
  • 线型
plot 函数的 Line Style 说明
- 实线(默认值)
- - 虚线
: 点线
-. 点虚线
  • 点型
plot 函数的 Marker 说明
O 圆形
+ 加号
X 叉号
* 星号
. 点号
^ 朝上三角形
V 朝下三角形
  • 颜色
plot 函数的 Color 颜色效果 RGB值
b 蓝色(Blue) (0,0,1)
c 青蓝色(Cyan) (0,1,1)
g 绿色(Green) (0,1,0)
k 黑色(Black) (0,0,0)
m 紫黑色(Magenta) (1,0,1)
r 紅色(Red) (1,0,0)
w 白色(White) (1,1,1)
y 黃色(Yellow) (1,1,0)

修改线型、点型或颜色时,直接在 x , y x, y x,y后面添加(用逗号隔开)相应的标记(用单引号引起来)就可以了,下面给出一些例子:

%线型
	plot(x, y, '--k');
	plot(x, y, 'b:');
	plot(x, y, '-.c');
	%点型
	plot(x, y, 'Xm');
	plot(x, y, 'y*');
	plot(x, y, '+g');
	%同时设置线型和点型
	plot(x, y, '*-r');
	plot(x, y, '^--g');
           

注:颜色的标记和线(点)型的标记的位置可调换,谁在前面都是可以的。也可以同时设置线型和点型。

(2)线宽( L i n e W i d t h LineWidth LineWidth)

直接上例子:

%线宽默认是 0.5
	plot(x, y, '--r', 'LineWidth', 2);
	plot(x, y, '-.g', 'LineWidth', 0.3);
           

性质方面常用的就这些,如果想实现某些特殊需求,可以查阅Matlab帮助文档。

6. 加入说明文字

为增强图形的可读性,常常需要对图形或坐标轴加入说明性的文字。

指令 说明
title 图形的标题
xlabel x x x 轴的说明
ylabel y y y 轴的说明
legend 标注图例
text 图形中加入文字
gtext 使用鼠标定位文字位置

注:一般 l e g e n d legend legend 写在最后,前面画几个图, l e g e n d legend legend 中就添加几项图例。

例子:

clear; clc;
	close all;
	t = 0 : pi/10 : 2*pi;
	x = t - 3;
	y = sin(t);
	z = cos(t);
	plot(t, x, '-r', t, y, '--g', t, z, '*b');
	xlabel('t = 0 to 2\pi'); 
	ylabel('values of t - 3, sin(t) and cos(t)');
	title('Function Plots of t - 3, sin(t) and cos(t)');
	%在(3,3)处加上字体颜色为蓝色的文本
	text(3, 3, '加的文本在这里', 'Color', 'b');
	%这里为了不遮挡图形,将图例的位置放在'northwest'处,也就是左上角,默认的是右上角
	legend({'t - 3', 'sin(t)','cos(t)'}, 'location', 'northwest');
	shg; %显示图像
           

绘图结果:

【Matlab】二维绘图总结

注:文本中可以使用 Latex 的语法。

7. 更改坐标轴性质

最常用的是

axis

指令,常用的功能列举如下:

clear; clc;
	close all;
	t = 0 : pi/10 : 2*pi;
	y = sin(t);
	plot(t, y);
	x1 = 0;
	x2 = 6;
	y1 = -3;
	y2 = 3;
	axis([x1 x2 y1 y2]); %设置x轴范围为 x1 到 x2, y轴范围为 y1 到 y2;
	shg;pause(2);
	%其他一些比较常用的功能如下:
	axis xy; %xy-Default方向。对于2d视图中的轴,y轴是垂直的,值从下到上递增
	shg;pause(2);
	axis ij; %ij-Reverse方向。对于2d视图中的坐标轴,y轴是垂直的,值从上到下递增
	shg;pause(2);
	axis auto; %自动生成坐标轴范围
	shg;pause(2);
	axis padded; %在图和绘图框之间填充边距
	shg;pause(2);
	axis tight; %将坐标轴限制设置为与数据的范围相等,以便绘图延伸到坐标轴的边缘
	shg;pause(2);
	axis equal; %将各坐标轴的单位长度设置为相等
	shg;pause(2);
	axis off; %隐藏坐标轴
	shg;pause(2);
	%注:上述的命令可以叠加,如下面的例子:
	axis equal tight;
           

8. 其他的一些函数

(1)hold 函数

这个函数在前面的例子中已经使用到了,它的功能是在已经画了曲线的图上再继续添加曲线。

clear; clc;
	close all;
	t = 0 : pi/10 : 2*pi;
	x = t - 3;
	y = sin(t);
	plot(t, x);
	shg;
	
	%这里如果不添加这个语句,那么上面这个图形会消失,即被下面这个图形覆盖
	hold on;
	
	plot(t, y);
	shg;
	%如果想重新画图,不想再在原来的图上添加图形,使用hold off;
	hold off;
	z = cos(t);
	plot(t, z);
	shg;
           

(2)grid 函数

有时希望在图形上加上网格,以便更好地观察波形的变化,这时便可以使用

grid on

指令,如果想要关闭网格,再使用

grid off

指令即可。

例子:

clear; clc;
	close all;
	t = 0 : pi/10 : 2*pi;
	y = cos(t);
	plot(t, y);
	grid on; %显示网格线
	shg;
	grid minor; %使用这个指令可以显示主要和次要网格线
	shg;
	grid off; %关闭网格线
	shg;
           

(3)plotyy 函数

在同一窗口画幅度相差很大的两条曲线,采用不同的y轴刻度。

如:

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, 'plot');
           

产生的效果如下图:

【Matlab】二维绘图总结

(4)subplot 函数

使用指令

subplot(m, n, p)

可以将窗口分成 m × n m\times n m×n 个子窗口,下一个 plot 指令绘图于第 p p p 个子窗口。 p p p 的计数方法为由左至右,从上到下进行计数,从1开始。

举例如下:

x = 0:pi/30:2*pi;
	subplot(2, 2, 1); %左上角
	plot(x, sin(x));
	title('sin(x)');
	
	subplot(2, 2, 2); %右上角
	plot(x, cos(x));
	title('cos(x)');
	
	subplot(2, 2, 3); %左下角
	plot(x, exp(-x).*sin(3*x));
	title('e^{-x} \cdot sin(3*x)'); %这里使用了Latex语法:\cdot(点乘)
	
	subplot(2, 2, 4); %右下角
	plot(x, x.^2);
	title('x^2');
           

产生的效果图如下:

【Matlab】二维绘图总结

注:使用

subplot()

时还可以组合子窗口,比如命令

subplot(2, 2, [1, 3])

就是将1号窗口和3号窗口组合起来,下一个

plot

指令就是在这个组合后的窗口进行绘图,这里就不再举例子了。

(5)对复数进行绘图

z是一个复数向量,那么命令

plot(z)

便等价于

plot(real(z), imag(z))

,即将z的实部和虚部当成x坐标和y坐标来画图。

举例如下:

theta = pi/2 : 2*pi/5 :(2*pi+pi/2);
	z = exp(j*theta);
	colordef black;//将背景色设置为黑色
	plot(z);
	
	%使横纵坐标单位长度相等,同时设置横纵坐标的范围刚好等于数据的范围
	axis equal tight;
	
	axis off;%隐藏坐标轴
           

最后的效果如下:

【Matlab】二维绘图总结

8. 写在最后

如果哪里有错误欢迎指出,共同学习,共同进步!

如果有什么问题,欢迎提问!

谢谢!

下一篇文章预告:【Matlab】三维绘图总结
欢迎继续关注

链接指路:

下一篇:【Matlab】三维绘图总结

继续阅读