一、绘图的基本步骤
在MATLAB中绘制图形,通常采用以下7个步骤
1.准备数据
准备好绘图需要的横坐标变量和纵坐标变量数据。
2.设置当前绘图区
在指定的位置创建新的绘图窗口,并自动以此窗口的绘图为当前绘图区。
3.绘制图形
创建坐标轴,指定叠加绘图模式,绘制函数曲线。
4.设置图形中曲线和标记点格式
设置图形中的线宽、线型、颜色和标记点的形状、大小、颜色等。
5.设置坐标轴和网格线属性
将坐标轴的范围设置在指定横线,并设置网格线的属性,如网格线的类型(实线、虚线)等
6.标注图形
对图形进行标注,包括在图形中添加标题、坐标轴标注、文字标注等、
7.保存和导出图形
按指定文件格式、属性保存或导出图形,以备后续使用。
二、在工作区直接绘图
使用工作空间直接绘图
三、利用函数绘图
MATLAB提供了丰富的绘图功能,在命令行窗口中输入help graph2d可得到所有绘制二维图形的命令,输入help graph3d可得到所有绘制三维图形的命令。
1.基本二维图形
plot(X1,Y1,LineSpec,‘PropertyName’,PropertyValue):对所有用plot函数创建的图形进行属性值设置。
常用的绘图选项:
选项 | 含义 | 选项 | 含义 |
---|---|---|---|
- | 实线 | . | 用点号标出数据点 |
– | 虚线 | ○ | 用圆圈标出数据点 |
: | 点线 | × | 用叉号标出数据点 |
-. | 点划线 | + | 用加号标出数据点 |
r | 红色 | s | 用小正方形标出数据点 |
g | 绿色 | D | 用菱形标出数据点 |
b | 蓝色 | V | 用下三角标出数据点 |
y | 黄色 | ^ | 用上三角标出数据点 |
m | 品红 | < | 用左三角标出数据点 |
c | 青色 | > | 用右三角标出数据点 |
w | 白色 | H | 用六角形标出数据点 |
k | 黑色 | P | 用五角形标出数据点 |
* | 用星号标出数据点 | - | - |
常用属性:
属性名 | 含义 | 属性名 | 含义 |
---|---|---|---|
LineWidth | 设置线的宽度 | MarkerEdgeColor | 设置标记点的边缘颜色 |
MarkerSize | 设置标记点的大小 | MarkerFaceColor | 设置标记点的填充颜色 |
h = plot(X1,Y1,LineSpec,‘PropertyName’,PropertyValue):返回绘制函数的句柄值h。
loglog函数、semilogx函数与semilogy函数的用法与plot函数的用法类似。
【例1】在同一坐标下绘制多条曲线
>> clear all;
t = 0: pi/50: 4*pi;
y0 = exp(-t/3);
y = exp(-t/3).*sin(3*t);
plot(t,y,t,y0,t,-y0);
grid on
【例2】加载MATLAB自带的噪声信号进行图形绘图
>> clear all;
>> load noisdopp;
>> plot(noisdopp)
2.双y轴绘图
在MATLAB中,提供了plotyy函数用于绘制双y轴图形绘制。在实际中,如果两组数据的数据范围相差较大,而又希望放在同一图形中比较分析,则可以绘制双y轴图形。
plotyy(x1,y1,x2,y2):在一个图形窗口同时绘制两条曲线(x1,y1)和(x2,y2),曲线(x1,y1)用左侧的y轴,曲线(x2,y2)用右侧的y轴。
plotyy(x1,y1,x2,y2,fun):fun是字符串格式,用于指定绘图的函数名,如plot、semilogx等。例如,命令plotyy(x1,y1,x2,y2,‘semilogx’)就是用函数semilogx来绘制曲线(x1,y1)和(x2,y2)。
plotyy(x1,y1,x2,y2,fun1,fun2):和第二种形式类似,只是用fun1和fun2可以指定不同的绘图函数分别绘制这两种曲线。
【例3】利用plotyy绘制双y轴图形。
>> clear all;
>> x = 0: 0.01: 20;
>> y1 = 200 * exp(-0.05 * x).*sin(x);
>> y2 = 0.8 * exp(-0.5 * x).*sin(10 * x);
>> figure
>> plotyy(x,y1,x,y2)
3.三维图形
1)三维曲线
在MATLAB中,提供了plot3函数用于绘制三维曲线,其函数的用法与二维曲线绘制函数plot类似。plot3函数的调用格式如下。
plot3(X1,Y1,Z1,…):以默认线型属性绘制三维点集(Xi,Yi,Zi)确定的曲线。Xi、Yi、Zi为相同大小的向量或矩阵。
plot3(X1,Y1,Z1,LineSpec…):以参数LineSpec确定的线型属性绘制三维点集(Xi,Yi,Zi)确定的曲线,Xi、Yi、Zi为相同大小的向量或矩阵。
plot3(…,‘PropertyName’,PropertyValue,…):绘制三维曲线,根据指定的属性值设定曲线的属性。
h = plot3(…):返回绘制曲线图的句柄值向量h。
【例4】利用plot绘制三维曲线图。
clear all
t = 0: pi/50: 10 * pi
st = sin(t)
ct = cos(t)
figure
plot3(st,ct,t)
MATLAB中,除了可以绘制三维线性图形外,还可以绘制三维曲面。常见的绘制三维曲面的MATLAB函数有mesh和surf。
2)三维网格图的绘制
在三维网格图绘制时经常需要用到meshgid,用于生成网格数据。
meshgrid的用法简介
[X,Y] = meshgid(x,y):输入向量x为xy平面上矩阵定义域的矩形分割线在x轴的值,输入向量y为xy平面上矩形定义域的矩形分割线在y轴的值。输出向量X为xy平面上矩形定义域的矩形分割点的横坐标值矩阵,输出向量Y为xy平面上矩形定义域的矩形分割点的纵坐标值矩阵。
[X,Y] = meshgrid(x):等价于[X,Y] = meshgrid(x,x)
[X,Y,Z] = meshgrid(x,y,z)
3)三维网格曲面
mesh(X,Y,Z)
4)三维阴影曲面
surf(X,Y,Z)
Matlab用surf函数画三维曲面
Matlab绘制三维曲线(plot3)和三维图形(mesh & surf)
Matlab中mesh和surf的区别
meshgrid,contour,surf,mesh的总结
4.图形的修饰
1)选择图形窗口的函数
1.打开不同图形窗口的函数
figure(1);figure(2);…;figure(n):用来打开不同的图形窗口,以便绘制不同的图形。
2.图形窗口分拆函数subplot
subplot(m,n,p):分割图形显示窗口,m表示上下分割个数,n表示左右分割个数,p表示子图编号。
【例5】图形窗口的创建与分割
clear all
b = 2 * pi
x = linspace(0,b,50) %分割点
for k = 1:9y = sin(k * x).*cos(.52 * x)subplot(3,3,k)plot(x,y,'linewidth',2)axis([0,2*pi,-1,1])
end
2)坐标轴相关函数
在默认情况下,MATLAB自动选择图形的横、纵坐标的比例,当然也可以用axis函数控制,常用的函数格式如下:
axis([xmin xmax ymin ymax]):[xmin xmax ymin ymax]中分别给出x轴和y轴的最大值、最小值。
axis equal:x轴和y轴的单位长度相同。
axis square:图框呈正方形。
axis off:清除坐标刻度。
semilogx:绘制以x轴为对数坐标(以10为底)、y轴为线性坐标的半对数坐标图形。
semilogy:绘制以y轴为对数坐标(以10为底)、x轴为线性坐标的半对数坐标图形。
loglog:绘制全对数坐标图形,即x、y轴均为对数坐标(以10为底)。
3)文字标识函数
text(x,y,‘字符串’):在图形的指定坐标位置(x,y)处标示单引号括起来的字符串。
gtext(‘说明文字’):利用鼠标在图形的某一位置标示说明文字。执行完绘图命令后再执行gtext(‘说明文字’)命令,就可在屏幕上得到一个光标,然后用鼠标选择说明文字的位置。
title(‘字符串’):在所绘制图形的最上端显示说明该图形标题的字符串。
xlanbel(‘字符串’)、ylanbel(‘字符串’)、zlanbel(‘字符串’):设置x、y、z坐标轴的名称。输入特殊的文字需要用反斜杠()开头。
legend(‘字符串1’、‘字符串2’,…,‘字符串n’):在屏幕上开启一个视窗,然后依据绘图函数的先后次序,用对应的字符串区分图形上的线。
4)添加或删除栅格
grid:给图形加上栅格线。
grid on :给当前坐标系加上栅格线。
grid off:从当前坐标系中删去栅格线。
grid:交替转换命令,即执行一次,转变一个状态(相当于grid on、grid off)。
5)图形保持或覆盖
hold on:把当前图形保持在屏幕不变,同时允许在这个坐标内绘制另外一个图形。
hold off:使新图覆盖旧图。
hold函数是一个交替转换函数,即执行一次,转变一个状态(相当于hold on、hold off)。
【例6】绘制对数坐标及半对数坐标图
clear all
x1 = logspace(-1,2)
subplot(131)
loglog(x1,exp(x1),'-s')
title('loglog函数绘图')
grid on
x2 = 0: 0.1 :10
subplot(132)
semilogx(10.^x2,x2,'r-.*')
title('semilogx函数绘图')
subplot(133)
semilogx(10.^x2,x2,'rd')
title('semilogy函数绘图')