0%

MATLAB绘制二维曲线(基本)

简单记录一下(ノ∀`*)。

绘图基本函数

在MATLAB语言中,最基本且应用最广泛的绘图函数是绘制曲线函数plot,利用它可在二维平面上绘制不同的曲线。plot函数的用法如下:

plot(y)

绘制以y为纵坐标的二维曲线。

y为向量时的plot(y)

y为长度为n的向量时,则纵坐标为y,MATLAB根据y向量的元素序号自动生成横坐标,为1:n的向量。

举个栗子
>> y0=[0 1 0 1 0 1 0 1 0 1 0]

y0 =

0 1 0 1 0 1 0 1 0 1 0

>> plot(y0)

y为矩阵时的plot(y)

ym*n矩阵时,plot(y)则将矩阵的每一列画一条曲线,共n条曲线,每条曲线自动用不同颜色表示,每条曲线横坐标为向量1:mm为矩阵的行数。

举个栗子
>> y1=[4 5 6;1 2 3;4 5 6]

y1 =

4 5 6
1 2 3
4 5 6

>> plot(y1)

plot(x,y)

绘制以x为横坐标,y为纵坐标的二维曲线。

x和y都为向量时的plot(x,y)

xy的长度必须相等。

举个栗子
>> x0=[0 1 1 2 2 3 3 4 4 5 5];
>> y0=[1 1 0 0 1 1 0 0 1 1 0];
>> plot(x0,y0)

x为向量、y为矩阵时的plot(x,y)

x的长度必须和y的行数或列数相等。

当向量x的长度和矩阵y的行数相等时,向量xy的每一列向量画一条曲线;

当向量x的长度和矩阵y的列数相等时,向量xy的每一行向量画一条曲线;

y为方阵,xy的行数、列数都相等,向量xy的每一列向量画一条曲线。

x为矩阵、y为向量时的plot(x,y)

x的行数或列数必须和y的长度相等。绘制方法与上一种情况类似。

x和y都为矩阵时的plot(x,y)

xy的大小必须相等,x的每一列与y对应的每一列画一条曲线。

线性图格式设置

设置曲线的线型、颜色和数据点标识

为了便于曲线比较,MATLAB语言提供了一些绘图选项,可以控制所绘的曲线的线型、颜色和数据点的标识符号。命令格式如下:

plot(x,y,'选项')

线型、颜色和数据点标识定义

颜色
类型 选型
蓝色 b
绿色 g
红色 r
青色 c
紫红色 m
黄色 y
黑色 k
白色 w
线型
类型 选项
实线 -
点线 :
虚线
点画线 -.
数据点标识
类型 选项
实点标记 .
圆圈标记 o
叉号标记 x
十字标记 +
星号标记 *
方块标记 s
钻石标记 d
下三角标记 v
上三角标记 ^
左三角标记 <
右三角标记 >
五角星标记 p
六角形标记 h

不同类型的选项可以组合使用。

>> x=0:0.1:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,'b-o',x,y2,'r-.d')

设置坐标轴

MATLAB语言可以通过函数axis设置坐标轴的刻度和范围来调整坐标轴。axis函数常用的调用格式如下:

函数命令 功能及说明
axis auto 使用默认设置
axis ([xmin,xmax,ymin,ymax]) 设定坐标范围,且要求xmin<xmax,ymin<ymax
axis equal 横纵坐标使用等长刻度
axis square 采用正方形坐标系
axis normal 默认矩形坐标系
axis tight 把数据范围设为坐标范围
axis image 横纵轴采用等长刻度,且坐标框紧贴数据范围
axis manual 保持当前坐标范围不变
axis fill 在manual方式下,使坐标充满整个绘图区域
axis on 显示坐标轴
axis off 取消坐标轴
axis xy 普通直角坐标,原点在左下方
axis ij 矩阵式坐标,原点在左上方
axis vis3d 保持高宽比不变,三维旋转时避免图形大小变化
>> x=0:0.1:2*pi;
>> y=sin(x);
>> plot(x,y);axis([0 4*pi -2 2])

网格线和坐标边框

网格线

为了便于读数,MATLAB语言可以使用grid on函数在坐标系中添加网格线,网格线根据坐标轴的刻度使用虚线分隔;使用grid off函数取消网格线。

>> x=0:0.1:2*pi;
>> y=sin(x);
>> plot(x,y);axis([0 4*pi -2 2]);grid on

坐标边框

MATLAB语言可以使用box on函数实现添加坐标边框,box off函数取消坐标边框。

>> x=0:0.1:2*pi;
>> y=sin(x);
>> plot(x,y);axis([0 4*pi -2 2]);box off

图形修饰

MATLAB语言提供了很多图形修饰函数,实现对图形添加标题,横纵坐标轴的标签,图形某一部分文本标注,不同曲线的图例标识等功能。

标题和标签设置

MATLAB语言提供title函数和label函数实现添加图形的标题和坐标轴的标签,其调用格式如下:

title('str')
xlabel('str')
ylabel('str')
zlabel('str')

title为设置图形标题的函数;

xlabelylabelzlabel分别为设置xyz坐标轴标签的函数;

str为注释字符串,也可为结构数组。

图形的文本标注

MATLAB语言提供textgtext函数,能在坐标系某一位置标注文本注释,其调用格式如下:

text(x,y,'str')
gtext('str')
gtext({'str1';'str2';'str3';...})

text(x,y,'str')函数能在坐标系位置(x,y)处添加文本注释str

gtext('str')可以为鼠标选择的位置处添加文本注释str

gtext({'str1';'str2';'str3';...})一次放置一个字符串,多次放置在鼠标指定的位置上。

图例设置

MATLAB语言可用legend函数添加图例,其调用格式为:

legend('str1','str2',...,'location',LOC)

str1str2为图例标题,与图形内曲线依次对应;

LOC为图例位置参数。

legend off用于取消图例。

图例位置参数

位置参数 功能
‘North’ 图内的顶部
‘South’ 图内的底部
‘East’ 图内的右侧
‘West’ 图内的左侧
‘NorthEast’ 图内右上角
‘NorthWest’ 图内左上角
‘SouthEast’ 图内右下角
‘SouthWest’ 图内左下角
‘Best’ 最佳位置
‘NorthOutside’ 图外的顶部
‘SouthOutside’ 图外的底部
‘EastOutside’ 图外的右侧
‘WestOutside’ 图外的左侧
‘NorthEastOutside’ 图外右上角
‘NorthWestOutside’ 图外左上角
‘SouthEastOutside’ 图外右下角
‘SouthWestOutside’ 图外左下角
BestOutside 图外最佳位置

用鼠标获取二维图形数据

MATLAB语言中的ginput函数可实现用鼠标从图形(仅适用于二维图形)获取数据功能,其调用方式如下:

[x,y]=ginput(n)

n是通过鼠标在图形中获取数据点的个数;

xy用来存储所获取的坐标,是列向量,每次获取的坐标点为列向量的一个元素。

图形保持

一般情况下,MATLAB每执行一次plot,就刷新一次当前图形窗口,原有的图形将被覆盖,但可以使用图形保持命令hold函数。

hold on是保持原有图形;

hold off是刷新原有图形。

>> t=(0:0.1:2*pi)';
>> y1=3*exp(-0.3*t)*[1,-1];
>> y2=3*exp(-0.3*t).*sin(3*t);
>> plot(t,y1,'r:')
>> hold on
>> plot(t,y2,'b-')

多个图形绘制

MATLAB语言提供subplot函数,实现一个图形窗口绘制多个图形的功能,其调用方式如下:

subplot(m,n,p)

将图形窗口分割成m*n子图,第p个为当前图;

子图排序:左上方为第一个,从左向右从上向下依次排序。

>> t=(0:0.1:2*pi);
>> y1=sin(t);
>> y2=cos(t);
>> y3=sin(2*t);
>> y4=cos(2*t);
>> subplot(2,2,1);plot(t,y1)
>> title('sin(t)')
>> subplot(2,2,2);plot(t,y2)
>> title('cos(t)')
>> subplot(2,2,3);plot(t,y3)
>> title('sin(2*t)')
>> subplot(2,2,4);plot(t,y4)
>> title('cos(2*t)')