第
7
章 绘图与图形处理
人们很难从一大堆原始的数据中发现它们的含义,而数据图形恰能使视觉感官直接感受到数据的许多内在本质,发现数据的内在联系。MATLAB可以表达出数据的二维,三维,甚至四维的图形。通过图形的线型,立面,色彩,光线,视角等属性的控制,可把数据的内在特征表现得淋漓尽致。下面我们分别介绍图形的命令。
7.1 二维图形
7.1.1 基本平面图形命令
命令
1
plot
功能 线性二维图。在线条多于一条时,若用户没有指定使用颜色,则
plot
循环使用由当前坐标轴颜色顺序属性(
current axes
ColorOrder property
)定义的颜色,以区别不同的线条。在用完上述属性值后,
plot
又循环使用由坐标轴线型顺序属性(
axes
LineStyleOrder property)定义的线型,以区别不同的线条。
用法 plot(X,Y) 当X,Y均为实数向量,且为同维向量(可以不是同型向量),X=[x(i)],Y=[y(i)],则
plot
(X,Y)先描出点(x(i),y(i)),然后用直线依次相连;若X,Y为复数向量,则不考虑虚数部分。若X,Y均为同维同型实数矩阵,X = [X(i)],Y = [Y(i)],其中X(i),Y(i)为列向量,则plot(X,Y)依次画出plot(X(i),Y(i)),矩阵有几列就有几条线;若X,Y中一个为向量,另一个为矩阵,且向量的维数等于矩阵的行数或者列数,则矩阵按向量的方向分解成几个向量,再与向量配对分别画出,矩阵可分解成几个向量就有几条线;在上述的几种使用形式中,若有复数出现,则复数的虚数部分将不被考虑。
plot(Y)
若
Y为实数向量,Y的维数为
m
,则
plot(Y)等价于plot(X,Y),其中
x=1
:
m
;若
y
为实数矩阵,则把
y
按列的方向分解成几个列向量,而
y
的行数为
n
,则
plot(Y)等价于plot(X,Y)其中
x=[1;2;
…;n];在上述的几种使用形式中,若有复数出现,则复数的虚数部分将不被考虑。
plot(X1,Y1,X2,Y2,…),其中Xi与Yi成对出现,plot(X1,Y1,X2,Y2,…)将分别按顺序取两数据Xi与Yi进行画图。若其中仅仅有Xi或Yi是矩阵,其余的为向量,向量维数与矩阵的维数匹配,则按匹配的方向来分解矩阵,再分别将配对的向量画出。
plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2…
)
将按顺序分别画出由三参数定义Xi,Yi,LineSpeci的线条。其中参数LineSpeci指明了线条的类型,标记符号,和画线用的颜色。在
plot
命令中我们可以混合使用三参数和二参数的形式:
plot(X1,Y1,LineSpec1,X2,Y2,X3,Y3,LineSpec3)
plot(
…
,'PropertyName',PropertyValue,
…
)
对所有的用
plot
生成的
line
图形对象中指定的属性进行恰当的设置。
h = plot(
…
)
返回
line
图形对象句柄的一列向量,一线条对应一句柄值。
说明 参数LineSpec
功能 定义线的属性。
Maltab
允许用户对线条定义如下的特性:
1
.线型
表
7-1
实线(缺省值)
2
.线条宽度
指定线条的宽度,取值为整数(单位为像素点)
3
.颜色
表
7-2
R(red)
G(green)
b(blue)
c(cyan)
M(magenta)
y(yellow)
k(black)
w(white)
4
.标记类型
表
7-3
o(
字母
)
7
.标记周边颜色
指定标记符颜色或者是标记符(小圆圈、正方形、棱形、正五角星、正六角星和四个方向的三角形)周边线条的颜色。取值在上表。
在所有的能产生线条的命令中,参数LineSepc可以定义线条的下面三个属性:线型、标记符号、颜色进行设置。对线条的上述属性的定义可用字符串来定义,如:
plot(x,y,'-.or')
结合
x
和
y
,画出点划线(
-
.),在数据点(
x
,
y
)处画出小圆圈(
o
),线和标记都用红色画出。其中定义符(即字符串)中的字母、符号可任意组合。若没有定义符,则画图命令
plot
自动用缺省值进行画图。若仅仅指定了标记符,而非线型,则
plot
只在数据点画出标记符。如:
plot(x,y,’d’)
例
7-
1
>>t = 0:pi/20:2*pi;
>>plot(t,t.*cos(t),'-.r*')
>>hold on
>>plot(exp(t/100).*sin(t-pi/2),'--mo')
>>plot(sin(t-pi),':bs')
>>hold off
图形结果为图
7-1
。
例
7-2
>>plot(t,sin(2*t),'-mo', 'LineWidth',2,'MarkerEdgeColor','k',
…
'MarkerFaceColor',[.49 1 .63],'MarkerSize',12)
图形结果为图
7-2
。
图
7-1
二维曲线图 图
7-2 二维图形的绘制
命令
2
fplot
功能 在指定的范围
limits
内画出一元函数
y=f
(
x
)的图形。其中向量
x
的分量分布在指定的范围内,
y
是与
x
同型的向量,对应的分量有函数关系:
y(i)=f(x(i))。若对应于
x
的值,
y
返回多个值,则
y
是一个矩阵,其中每列对应一个
f
(
x
)。例如,
f
(
x
)返回向量
[f1
(x),f2(x),f3(x)]
,输入参量
x=[
x1;x2;x3]
,则函数
f
(
x
)返回矩阵
f1(x1) f2(x1) f3(x1)
f1(x2) f2(x2) f3(x2)
f1(x3) f2(x3) f3(x3)
注意一点的是,函数
function
必须是一个
m-
文件函数或者是一个包含变量
x
,且能用函数
eval
计算的字符串。例如:
’sin(x)*exp(2*x)’,’[sin(x),cos(x)]’,’hump(x)’。
用法 fplot('function',limits)
在指定的范围
limits
内画出函数名为
function
的一元函数图形。其中
limits
是一个指定
x-
轴范围的向量
[
xmin xmax]
或者是
x
轴和
y
轴的范围的向量
[
xmin xmax ymin ymax]
。
fplot('function',limits,LineSpec) 用指定的线型LineSpec画出函数
function
。
fplot('function',limits,tol)
用相对误差值为
tol
画出函数
function
。相对误差的缺省值为
2e-3
。
fplot('function',limits,tol,LineSpec)
用指定的相对误差值
tol
和指定的线型
LineSpec画出函数
function
的图形。
fplot('function',limits,n)
当
n
>=1
,则至少画出
n+1
个点(即至少把范围
limits
分成
n
个小区间),最大步长不超过
(xmax-xmin)/n。
fplot(‘function’,lims,…) 允许可选参数
tol
,
n
和
LineSpec以任意组合方式输入。
[X,Y] = fplot('function',limits,
…
)
返回横坐标与纵坐标的值给变量
X和Y,此时
fplot
不画出图形。若想画出,可用命令
plot(X,Y)。
[
…
] = plot('function',limits,tol,n,LineSpec,P1,P2,
…
)
允许用户直接给函数
function
输入参数
P1,P2等,其中函数
functiond
的定义形式为
y = function(x,P1,P2,…)
若想用缺省的
tol
,
n
或
LineSpec值,只需将空矩阵(
[ ]
)传递给函数即可。
注意:fplot
采用自适应步长控制来画出函数
function
的示意图,在函数的变化激烈的区间,采用小的步长,否则采用大的步长。总之,使计算量与时间最小,图形尽可能精确。
例
7-3
>>fplot('tanh',[-2 2])
图形结果为图
7-3
。
>>subplot(2,2,1);fplot('humps',[0 1])
>>subplot(2,2,2);fplot('abs(exp(-j*x*(0:9))*ones(10,1))',[0 2*pi])
>>subplot(2,1,2);fplot('[tan(x),sin(x),cos(x)]',2*pi*[-1 1 -1 1])
图
7-3
函数画图
图
7-4
命令
3
loglog
功能 双对数图形。
用法 loglog(Y)
若
y
为实数向量或矩阵,则结合
y
列向量的下标与
y
的列向量画出。若
y
为复数向量或矩阵,则
loglog(Y)等价于loglog(real(Y),imag(Y)),在
loglog
的其他使用形式中将忽略
Y的虚数部分。
loglog(X1,Y1,X2,Y2…
)
结合
Xn与Yn画出图形。若只有Xn或Yn为矩阵,另一个为向量,行向量维数等于矩阵的列数,列向量的维数等于矩阵的行数,则
loglog
把矩阵按向量的方向分解成向量,再与向量结合分别画出图形。
loglog(X1,Y1,LineSpec1,X2,Y2,LineSpeec2…
)
按顺序取三个参数
Xn,Yn, LineSpecn画出线条,其中LineSpecn指定线条的线型,标记符号和颜色。用户可以混合使用二参数和三参数形式,如:
loglog(X1,Y1,X2,Y2,LineSpec2,X3,Y3)
loglog(
…
,'PropertyName',PropertyValue,
…
)
对所有由
loglog
命令生成的图形对象句柄的属性进行设置。
h = loglog(
…
)
返回
line
图形句柄向量,每条线对应一个句柄。
例
7-4
>>x = logspace(-1,2);
>>loglog(x,10*exp(x),'-s')
>>grid on
图
7-5
命令
4
semilogx
功能 x
轴对数图形。若没有指定使用的颜色,当所画线条较多时,
semilogx
将自动使用由当前轴的
ColorOrder和LineStyleOrder属性指定的颜色顺序和线型顺序来画线。
用法 semilogx(Y) %
对
x
轴的刻度求常用对数(以
10
为底),而
y
轴为线性刻度。若
y
为实数向量或矩阵,则结合
y
列向量的下标与
y
的列向量画出线条;若
y
为复数向量或矩阵,则
semilogx(Y)等价于semilogx(real(Y),imag(Y))。在
semilogx
的其他使用形式中,
Y的虚数部分将被忽略。
semilogx(X1,Y1,X2,Y2…
)
%
结合
Xn和Yn画出线条,若其中只有
xn
或
yn
为矩阵,另外一个为向量,行向量的维数等于矩阵的列数,列向量的维数等于矩阵的行数,则按向量的方向分解矩阵,再与向量结合,分别画出线条。
semilogx(X1,Y1,LineSpec1X2,Y2,LineSpec2,
…
)
%
按顺序取三参数
Xn,Yn,LineSpecn画线,参数LineSpecn指定使用的线型,标记符号和颜色。用户可以混合使用二参数和三参数形式,如:
semilogx(X1,Y1,X2,Y2,LineSpec2,X3,Y3)
semilogx(
…
,'PropertyName',PropertyValue,
…
) %
对所有由
semilogx
命令生成的图形对象句柄的属性进行设置
h = semilogx(
…
) %
返回
line
图形句柄向量,每条线对应一个句柄。
例
7-5
>>x = 0:.1:10;
>>semilogx(x,cos(10.^x))
图形结果为图
7-6
。
命令
5
semilogy
用法:参见
semilogx
命令。
命令
6
fill
功能 用颜色填充二维多边形。
用法 fill(X,Y,C)
用
x
和
y
中的数据生成多边形,用
c
指定的颜色填充它。其中
c
为色图向量或矩阵。若
c
是行向量,则要求
c
的维数等于
x
和
y
的列数,若
c
为列向量,则要求
c
的维数等于
x
和
y
的行数。
fill(X,Y,ColorSpec)
用
ColorSpec指定的颜色填充由
x
和
y
定义的多边形
fill(X1,Y1,C1,X2,Y2,C2,
…
)
指定多个要填充的二维区域
fill(
…
,'PropertyName',PropertyValue)
允许用户对一个
patch
图形对象的某个属性设定属性值。
h = fill(
…
)
返回
patch
图形对象句柄的向量,每一个
patch
对象对应一个句柄。
1. 若
x
或
y
是一矩阵,另一个是向量,向量应是维数与矩阵的行数相等的列向量或是维数等于矩阵列数的行向量时,函数
fill
将向量复制成与矩阵同型的矩阵。函数
fill
将矩阵
x
与
y
中列向量中的数据生成多边形的顶点。
2. 颜色阴影类型决定于用户在参数中列出的颜色,若用户用ColorSpec指定颜色,命令
fill
生成平坦阴影模式(
flat-shaded
)多边形,同时设置补片对象(
patch
)的
FaceColor属性为相应的RGB颜色矩阵。
3.
若用户用参量
c
指定所用颜色,命令
fill
按坐标轴属性
Clim的比例缩小
c
中的元素,之后,
c
成为引用当前色图的下标矩阵。
4. 若
c
为行向量,命令
fill
生成平面阴影的多边形,
c
的每一元素决定由矩阵
x
,
y
的每一列定义的多边形内的颜色,每一补片对象的
FaceColor属性被设置为'flat',
x
,
y
的每一行元素变成第
n
块补片对象的
Cdata属性值,其中
n
为矩阵
x
或
y
中的相应的列。
5. 若
c
为一列向量或一矩阵,命令
fill
运用一线性插值法计算每一节点的颜色,以便用插值颜色填充多边形的内部。它设置补片对象的
FaceColor属性为‘
interp
’,且在一列中的元素变成每一补片的
Cdata属性值。若
c
为一列向量,命令
fill
用该向量复制成需要大小的尺寸。
例
7-6
>>t = (1/16:1/8:1)'*2*pi;
>>x = exp(t).*sin(t);
>>y = t.*cos(t);
>>fill(x,y,'k')
>>grid on
图形结果为图
7-7
。
命令
7
zoom
功能 对二维图形进行放大或缩小。放大或缩小会改变坐标轴范围。
用法 zoom on
打开交互式的放大功能。当一个图形处于交互式的放大状态时,有两种方法来放大图形:
对于一键鼠标或二键,三键鼠标,单击坐标轴内的任意一点,可使图形放大一倍,这一操作可进行多次,直到
matlab
的最大显示为止;对于二键或三键的鼠标,在坐标轴内单击右键,可使图形缩小一倍,这一操作可进行多次,直到还原图形为止。对于一键鼠标,要想缩小图形,需要按住键盘上的
Shift键,再单击鼠标键。
用鼠标拖出要放大的部分,系统将放大选定的区域。
zoom off
关闭交互式放大功能。
zoom out
将系统转回非放大状态,并将图形恢复原状。
zoom reset
系统将记住当前图形的放大状态,作为放大状态的设置值。以后使用
zoom out
或者是双击鼠标时,交互式放大状态打开,且图形并不是返回到原状,而是返回
reset
时的放大状态。
zoom
用于切换放大的状态:
on
和
off
。
zoom xon
只对
x
轴进行放大。
zoom yon
只对
y
轴进行放大。
zoom(factor)
用放大系数
factor
进行放大或缩小,而不影响交互式放大的状态。若
factor
>1,系统将图形放大
factor
倍,若
0
<factor≤1,系统将图形放大
1/factor
倍。
zoom(fig, option)
指定对窗口
fig
中(不一定为当前窗口)的二维图形进行放大,其中参数
option
为:
on、off、xon、yon、reset、factor等。
命令8 meshgrid
功能 生成二元函数z = f(x,y)中
x-y
平面上的矩形定义域中数据点矩阵
X和Y,或者是三元函数u = f(x,y,z)中立方体定义域中的数据点矩阵X,Y和Z。
用法 a
:
[X,Y] = meshgrid(x,y)
b
:
[X,Y] = meshgrid(x)
c
:
[X,Y,Z] = meshgrid(x,y,z)
说明 对于形式
a
,输入向量
x
为
x-y
平面上矩形定义域的矩形分割线在
x
轴的值,向量
y
为
x-y
平面上矩形定义域的矩形分割线在
y
轴的值。输出向量
X为
x-y
平面上矩形定义域的矩形分割点的横坐标值矩阵,输出向量
Y为
x-y
平面上矩形定义域的矩形分割点的纵坐标值矩阵。
对于形式
b
,等价于形式
a
:
[X,Y] = meshgrid(x) = meshgrid(x,x)。
对于形式
c
,输入向量
x
为立方体定义域的立方体分割平面在
x
轴上的值,输入向量
y
为立方体定义域的立方体分割平面在
y
轴上的值,输入向量
z
为立方体定义域的立方体分割平面在
z
轴上的值。输出向量
X为立方体定义域中分割点的
x
轴坐标值
,Y为立方体定义域中分割点的
y
轴坐标值
,Z为立方体定义域中分割点的
z
轴坐标值。
例
7-7
>>x = [0.7 1.1 ]; y = [-2 3 1]; z = [2 5 3]; %分量不一定从小到大
>>[X_2d,Y_2d] = meshgrid(x,y)
>>[X_3d,Y_3d,Z_3d] = meshgrid(x,y,z)
计算结果为:
X_2d =
0.7000 1.1000
0.7000 1.1000
0.7000 1.1000
Y_2d =
-2 -2
3 3
1 1
X_3d(:,:,1) =
0.7000 1.1000
0.7000 1.1000
0.7000 1.1000
X_3d(:,:,2) =
0.7000 1.1000
0.7000 1.1000
0.7000 1.1000
X_3d(:,:,3) =
0.7000 1.1000
0.7000 1.1000
0.7000 1.1000
Y_3d(:,:,1) =
-2 -2
3 3
1 1
Y_3d(:,:,2) =
-2 -2
3 3
1 1
Y_3d(:,:,3) =
-2 -2
3 3
1 1
Z_3d(:,:,1) =
2 2
2 2
2 2
Z_3d(:,:,2) =
5 5
5 5
5 5
Z_3d(:,:,3) =
3 3
3 3
3 3
7.1.2 特殊平面图形命令
命令
1
polar
功能 画极坐标图。该命令接受极坐标形式的函数
rho=f
(θ),在笛卡儿坐标系平面上画出该函数,且在平面上画出极坐标形式的格栅。
用法 polar(theta,rho)
用极角
theta
和极径
rho
画出极坐标图形。极角
theta
为从
x
轴到半径的单位为弧度的向量,极径
rho
为各数据点到极点的半径向量。
polar(theta,rho,LineSpec)
参量
LineSpec指定极坐标图中线条的线型、标记符号和颜色等。
例
7-8
>>t = 0:.01:2*pi;
>>polar(t,sin(3*t).*cos(2*t),'--r')
图形结果为图
7-8
。
命令
2
bar
功能 二维垂直条形图。用垂直条形显示向量或矩阵中的值。
用法 bar(Y)
若
y
为向量,则分别显示每个分量的高度,横坐标为
1
到
length
(
y
);若
y
为矩阵,则
bar
把
y
分解成行向量,再分别画出,横坐标为
1
到
size
(
y
,
1
),即矩阵的行数。
bar(x,Y)
在指定的横坐标
x
上画出
y
,其中
x
为严格单增的向量。若
y
为矩阵,则
bar
把矩阵分解成几个行向量,在指定的横坐标处分别画出。
bar(
…
,width)
设置条形的相对宽度和控制在一组内条形的间距。缺省值为
0
.8,所以,如果用户没有指定
x
,则同一组内的条形有很小的间距,若设置
width
为
1
,则同一组内的条形相互接触。
bar(
…
,'style')
指定条形的排列类型。类型有“
group
”和“
stack
”,其中“
group
”为缺省的显示模式。
“
group
”:若
y
为
n*m
阶的矩阵,则
bar
显示
n
组,每组有
m
个垂直条形的条形图。
“
stack
”:对矩阵
y
的每一个行向量显示在一个条形中,条形的高度为该行向量中的分量和。其中同一条形中的每个分量用不同的颜色显示出来,从而可以显示每个分量在向量中的分布。
bar(
…
,LineSpec)
用指定的颜色
LineSpec显示所有的条形。
[xb,yb] = bar(
…
)
返回用户可用命令
plot
或命令
patch
画出条形图的参量
xb
,
yb
。这对用户控制一个图形的显示是有用的,例如要在一个
plot
语句中加入装饰性的条形图等。
h = bar(
…
)
返回一个
patch
图形对象句柄的向量。每一条形对应一个句柄。
例
7-9
x = -2.9:0.2:2.9;
bar(x,exp(x.*sin(x)))
colormap gray
图形结果为图
7-9
。
例
7-10
subplot(2,2,4)
bar(Y,1.5)
title 'Width = 1.5'
图形结果为图
7-10
。
命令
3
barh
功能 二维水平条形图。用水平条形显示向量或矩阵中的值。
用法 barh(Y)
若
y
为向量,则分别显示每个分量的高度,纵坐标为
1
到
length
(y);若
y
为矩阵,则
bar
把
y
分解成行向量,再分别画出,纵坐标为
1
到
size
(y,1),即矩阵的行数。
barh(x,Y)
在指定的纵坐标
x
上以水平方向画出
y
,其中
x
为严格单增的向量。若
y
为矩阵,则
barh
把矩阵分解成几个行向量,在指定的纵坐标处分别画出。
barh(
…
,width)
设置条形的相对宽度和控制在一组内条形的间距。缺省值为
0
.8,所以,如果用户没有指定
x
,则同一组内的条形有很小的间距,若设置
width
为
1
,则同一组内的条形相互接触。
barh(
…
,'style')
指定条形的排列类型。类型有“
group
”和“
stack
”,其中“
group
”为缺省的显示模式。
“
group
”:若
y
为
n*m
阶的矩阵,则
bar
显示
n
组,每组有
m
个水平条形的条形图。
“
stack
”:对矩阵
y
的每一个行向量显示在一个条形中,条形的高度为该行向量中的分量和。其中同一条形中的每个分量用不同的颜色显示出来,从而可以显示每个分量在向量中的分布。
barh(
…
,LineSpec)
用指定的颜色
LineSpec显示所有的条形。
[xb,yb] = barh(
…
)
返回用户可用命令
plot
或命令
patch
画出条形图的参量
xb
,
yb
。这给用户控制一个图形的显示是有用的,例如要在一个
plot
语句中加入装饰性的条形图等。
h = barh(
…
)
返回一个
patch
图形对象句柄的向量。每一条形对应一个句柄。
例
7-1
1
>>X = 1:.5:5;
>>Y = exp(X).*sin(X);
>>barh(Y,'stack')
图形结果为图
7-11
。
命令
4
compass
功能 从原点画箭头图。箭头图为一显示起点为笛卡儿坐标系中的原点的二维或三维方向或向量的图形,同时在坐标系中显示圆形的分隔线。
用法 compass(X,Y)
参量
x
与
y
为同型的
n
维向量,则命令显示
n
个箭头,箭头的起点为原点,箭头的位置为
[X(i),Y(i)]。
compass(Z)
参量
z
为
n
维复数向量,则命令显示
n
个箭头,箭头起点为原点,箭头的位置为
[
real(Z),imag(Z)].
compass(
…
,LineSpec)
用参量LineSpec指定箭头图的线型、标记符号、颜色等属性。
h = compass(
…
)
返回
line
对象的句柄给
h
。
例
7-12
Z = magic(20).*randn(20);
compass(Z)
图形结果为图
7-12
。
命令
5
comet
功能 二维彗星图。彗星图为彗星头(一个小圆圈)沿着数据点前进的动画,彗星体为跟在彗星头后面的痕迹,轨道为沿着整个函数的实线。我们要指出的是,由命令
comet
生成的轨迹是使用擦除模式(
EraseMode)属性的值为none,该属性使用户不能打印该图形(只能得到彗星头),且当用户改变窗口的大小时,动画将消失。
用法 comet(y)
彗星图动画显示向量
y
确定的路线。
comet(x,y)
彗星图动画显示向量
x
与
y
确定的路线。
comet(x,y,p)
指定彗星体的长度
p*length(y),缺省的
p
值为
0
.1。
例
7-13
>>t = 0:.01:2*pi;
>>x = exp(sin(2*t)).*(cos(t).^2/3);
>>y = t.*(sin(t).^2);
>>comet(x,y);
图形结果为图
7-13
。
附:擦除模式
(
EraseMode)
属性及属性值:
{normal}|none|xor|background
该属性控制系统用于显示与擦除线条对象的技术。不同的擦除模式对于生成动画系列,即控制个别对象的重新显示方式,对于改进外在显示和获得理想的效果是很必要的。
表
7-4
Normal
(缺省值)
重新显示受影响的区域,在必要的时候,进行三维分析计算,以保证所有的对象的显示都是正确的。该模式下的图形显示是最精确的,不过也是最缓慢的,以下其他三种模式显示速度较快,不过没有执行一个完全的重显过程,因而,图形显示也不是很精确的。
当线条移动或改动时,该模式没有擦除线条,而是仍然显示于屏幕上。该模式下不能打印图形,因为系统没有存储前一图形的任何信息。
使用异或运算(xor)计算线条颜色与当前位置下的颜色,用所得结果显示与擦除线条。该模式对于线条下面对象的颜色没有任何破坏,只是影响到线条的当前显示颜色而已。
Background
用当前坐标轴颜色重新显示线条的方式来擦除线条,若当前坐标轴颜色设置为
none
,则用图形的背景色来代替坐标轴颜色。该模式对于处于擦除线条后面的对象来说是有损害的,不过当前线条的颜色总是最合适的。
命令
6
errorbar
功能 沿着一曲线画误差棒形图。误差棒为数据的置信水平或者为沿着曲线的偏差。在下列参数中,若为矩阵,则按列画出误差棒。
用法 errorbar(Y,E)
画出向量
y
,同时显示在向量
y
的每一元素之上的误差棒。误差棒为
E(i)在曲线y上面与下面的距离,所以误差棒的长度为
2*
E(i)。
errorbar(X,Y,E) X,Y,E必须为同型参量。若同为向量,则画出带长度为
2*
E(i)、对称误差棒于曲线点(X(i),Y(i))之处;若同为矩阵,则画出带长度为E(i
,
j
)、对称误差棒于曲面点(X(i,j),Y(i,j))之处,
errorbar(X,Y,L,U) X,Y,L,U必须为同型参量。若同为向量,则在点(X(i),Y(i))处画出向下长为L(i),向上长为U(i)的误差棒;若同为矩阵,则在点(X(i,j),Y(i.j))处画出向下长为L(i,j),向上长为U(i,j)的误差棒。
errorbar(
…
,LineSpec)
用
LineSpec指定的线型、标记符、颜色等画出误差棒。
h = errorbar(
…
)
返回线图形对象的句柄向量给
h
。
例
7-14
>>X = 0:pi/10:pi;
>>Y = exp(X).*sin(X);
>>E = std(Y)*ones(size(X));
>>errorbar(X,Y,E)
图形结果为图
7-14
。
命令
7
feather
功能 画出速度向量图。一羽毛图在横坐标上等距地显示向量。用户要表示各个向量的、相对于原点的向量分量。
用法 feather(U,V)
显示由参量向量
u
与
v
确定的向量,其中
u
包含作为相对坐标系中的
x
成分,
v
包含作为相对坐标系中的
y
成分。
feather(Z)
显示复数参量向量
z
确定的向量,等价于
feather(real(Z),imag(Z))。
feather(
…
,LineSpec)
用参量
LineSpec指定的线型、标记符号、颜色等属性画出羽毛图。
例
7-15
>>th = (-90:10:90)*pi/180;
>>r = 4*ones(size(th));
>>[u,v] = pol2cart(th,r);
>>feather(u,v);
图形结果为图
7-15
。
命令
8
hist
功能 二维条形直方图,可以显示出数据的分配情形。所有向量
y
中的元素或者是矩阵
y
中的列向量中的元素是根据它们的数值范围来分组的,每一组作为一个条形进行显示。条形直方图中的
x
轴反映了数据
y
中元素数值的范围,直方图的
y
轴显示出参量
y
中的元素落入该组的数目。所以
y
轴的范围从
0
到任一条形中包含元素最多的数字。直方图为一
patch
图形对象,若想改变图形的颜色,可以对
patch
对象的属性进行设置。缺省时,图形颜色是由当前色图进行控制,当前色图的第一个颜色为直方图的颜色。
用法 n = hist(Y)
把向量
y
中的元素放入等距的
10
个条形中,且返回每一个条形中的元素个数。若
y
为矩阵,则该命令按列对
y
进行处理。
n = hist(Y,x)
参量
x
为向量,把
y
中元素放到
m
(
m=
length(x))个由
x
中元素指定的位置为中心的条形中。
n = hist(Y,nbins)
参量
nbins
为标量,用于指定条形的数目。
[n,xout] = hist(
…
)
返回向量
n
与包含频率计数与条形的位置向量
xout
,用户可以用命令
bar(xout,n)画出条形直方图。
例
7-16
>>x = -5:0.1:5;
>>y = randn(1000,1);
>>hist(y,x)
图形结果为图
7-16
。
命令
9
histc
功能 直方图记数
用法 n = histc(x,edges)
统计向量
x
中、落入向量
edges
(元素必须为单调的非减的)各个元素之间的元素个数。输出参量
n
为一与向量
edges
同维的向量。其中若有
edges(k)>=x(i)>=edges(k+1),则
n
(k)增加
1
。
X
中超出向量
edges
规定的范围的元素将不被统计。参量
edges
中可使用
-inf
与
inf
,用于包括向量
x
中非
NaN的元素。若
x
为一矩阵,则对
x
的每一列进行上述操作。
n = histc(x,edges,dim)
对多维矩阵的第
dim
维进行统计。
[n,bin] = histc(
…
) n
结果同上,同时返回矩阵下标
bin
。若
x
为向量,
n
(k) = sum(bin == k)。对于超出范围的数值,
bin
为零值。
命令
10
rose
功能 画角度直方图。该直方图是一个显示所给数据的变化范围内数据的分布情形的极坐标图,所给数据分成不同的组。每一组作为一小扇形进行显示。
用法 rose(theta)
画一角度直方图,显示参数
theta
的数据在
20
个区间或更少的区间内的分布。向量
theta
中的角度单位为弧度,用于确定每一区间与原点的角度。每一区间的长度反映出输入参量的元素落入一区间的个数。
rose(theta,x)
用参量
x
指定每一区间内的元素与区间的位置,
leng
th(x)等于每一区间内元素的个数与每一区间位置角度的中间角度。例如,若
x
为一
5
维向量,
rose
命令分配参量
theta
中的元素为
5
部分,每一部分的角度中线由
x
指定。
rose(theta,nbins)
于区间
[
0,2*pi]
内画出
nbins
个等距的小扇形。缺省值为
20
。
[tout,rout] = rose(
…
)
返回向量
tout
与
rout
,可以用
polar(tout,rout)画出图形。该命令没有画任何的图形。
例
7-17
>>theta = 3*pi*randn(1,30);
>>rose(theta)
图形结果为图
7-17
。
命令
11
stairs
功能 画二维阶梯图,这种图对与时间有关的数字样本系统的作图很有用处。
用法 stairs(Y)
用参量
y
的元素画一阶梯图。若
y
为向量,则横坐标
x
的范围从
1
到
m=length
(y),若
y
为矩阵,则对
y
的每一行画一阶梯图,其中
x
的范围从
1
到
y
的列数
m
。
stairs(X,Y)
结合
x
与
y
画阶梯图。其中要求
x
与
y
为同型的向量或矩阵。此外,
x
可以为行向量或为列向量,且
y
为有
m=length
(
x
)行的矩阵。
stairs(
…
,LineSpec)
用参数
LineSpec指定的线型、标记符号和颜色画阶梯图。
[xb,yb] = stairs(Y)
该命令没有画图,而是返回可以用命令
plot
画出参量
y
的阶梯图的向量
xb
与
yb
。
[xb,yb] = stairs(X,Y)
该命令没有画图,而是返回可以用命令
plot
画出参量
x
,
y
的阶梯图的向量
xb
与
yb
。
例
7-18
>>x = 0:.25:10;
>>stairs(x,exp(sin(x.^2)))
图形结果为图
7-18
。
命令
12
stem
功能 画二维离散数据的柄形图。该图用线条显示数据点与
x
轴的距离,一小圆圈(缺省标记)或用指定的其他标记符号与线条相连,在
y
轴上标记数据点的值。
用法 stem(Y)
按
y
元素的顺序画出柄形图,在
x
轴上,柄与柄之间的距离相等;若
y
为矩阵,则把
y
分成几个行向量,在同一横坐标的位置上画出一个行向量的柄图。
stem(X,Y)
在横坐标
x
上画出列向量
y
的柄形图 。其中
x
与
y
为同型的向量或矩阵,此外,
x
可以为行向量或列向量,而
y
为有
m=length
(
x
)行的矩阵。
stem(
…
,'fill')
指定是否对柄形图末端的小圆圈填充颜色。
stem(
…
,LineSpec)
用参数
LineSpec指定线型,标记符号和柄图末端的小圆圈的颜色画柄图。
h = stem(
…
)
返回柄形图的
line
图形对象句柄向量。
例
7-19
>>x = linspace(0,2,10);
>>stem(exp(-x.^2),'fill','-.')
图形结果为图
7-19
。
命令
13
stem3
功能 画三维离散数据的柄形图。该图用一线段显示数据离开
xy
平面的高度,在线段的末端用一小圆圈(缺省记号)或其他的标记符号表示数据的高度。
格式 stem3(Z)
用柄形图显示
z
中数据与
xy
平面的高度。若
z
为一行向量,则
x
与
y
将自动生成,
stem3
将在与
x
轴平行的方向上等距的位置上画出
z
的元素;若
y
为列向量,
stem3
将在与
y
轴平行的方向上等距的位置上画出
z
的元素。
stem3(X,Y,Z)
在参数
x
与
y
指定的位置上画出
z
的元素,其中
x
,
y
,
z
必须为同型的向量或矩阵。
stem3(
…
,'fill')
指定是否要填充柄形图末端小圆圈。
stem3(
…
,LineSpec)
指定线型,标记符号和末端小圆圈的颜色。
h = stem3(
…
)
返回柄形图的
line
图形对象句柄。
例
7-20
[X,Y,Z] = peaks(20);
stem3(X,Y,Z,’r*')
图形结果为图
7-20
。
命令
14
pie
功能 饼形图
格式 pie(X)
用
x
中的数据画一饼形图,
x
中的每一元素代表饼形图中的一部分。
X
中元素
X(i)所代表的扇形大小通过X(i)/sum(X)的大小来决定。若有sum(X)=1,则
x
中元素就直接指定了所在部分的大小;若
sum(X)<1,则画出一不完整的饼形图。
pie(X,explode)
从饼形图中分离出一部分,
explode
为元素为零或非零的、与
x
相对应的向量或矩阵。与
explode
的非零值对应的部分将从饼形图中心分离出来。
explode
必须与
x
同型。
h = pie(
…
)
返回一
patch与text的图形对象句柄向量
h
。
例
7-21
>>x = [1 3 0.5 2.5 2];
>>explode = [0 1 0 0 0];
>>pie(x,explode)
图形结果为图
7-21
。
命令
1
grid
功能 给二维或三维图形的坐标面增加分隔线。该命令会对当前坐标轴的Xgrid,Ygrid,Zgrid的属性有影响。
用法 grid on
给当前的坐标轴增加分隔线。
grid off
从当前的坐标轴中去掉分隔线。
grid
转换分隔线的显示与否的状态。
grid(axes_handle,on|off)
对指定的坐标轴
axes
_handle
是否显示分隔线。
命令
2
gtext
功能 在当前二维图形中用鼠标放置文字。当光标进入图形窗口时,会变成一个大十字,表明系统正等待用户的动作。
用法 gtext('string')
当光标位于一个图形窗口内时,等待用户单击鼠标或键盘。若按下鼠标或键盘,则在光标的位置放置给定的文字“
string
”
h = gtext('string')
当用户在鼠标指定的位置放置文字“
string
”后,返回一个
text
图形对象句柄给
h
。
命令
3
legend
功能 在图形上添加图例。该命令对有多种图形对象类型(线条图,条形图,饼形图等)的窗口中显示一个图例。对于每一线条,图例会在用户给定的文字标签旁显示线条的线型,标记符号和颜色等。当所画的是区域(
patch
或
surface
对象)时,图例会在文字旁显示表面颜色。
Matlab
在一个坐标轴中仅仅显示一个图例。图例的位置有几个因素决定,像遮挡的对象等,用户可以用鼠标拖动图例到恰当的位置,双击标签可以进入标签编辑状态。
用法 legend('string1','string2',
…
)
用指定的文字
string
在当前坐标轴中对所给数据的每一部分显示一个图例。
legend(h,'string1','string2',
…
)
用指定的文字
string
在一个包含于句柄向量
h
中的图形显示图例。用给定的数据对相应的图形对象加上图例。
legend(string_matrix)
用字符矩阵参量
string
_matrix
的每一行字符串作为标签。
legend(h,string_matrix)
用字符矩阵参量
string
_matrix
的每一行字符串作为标签给包含于句柄向量
h
中的相应的图形对象加标签。
legend(axes_handle,
…
)
给由句柄
axes
_handle
指定的坐标轴显示图例。
legend('off')
从当前的坐标轴,或是由
axes-handle
指定的坐标轴中除掉图例。
legend(axes_handle,'off') 从由
axes_handle
指定的坐标轴中除掉图例。
legend_handle = legend 返回当前坐标轴中的图例句柄,若坐标轴中没有图例存在,则返回空向量。
legend
对当前图形中所有的图例进行刷新。
legend(legend_handle) 对由句柄legend_handle指定的图例进行刷新。
legend(
…
,pos)
在指定的位置
pos
放置图例见表
7-5
。
表
7-5
Pos取值
pos=-1
pos=0
Pos=1
坐标轴之外的右边
坐标轴之内,有可能遮挡部分图形
坐标轴的右上角(缺省位置)
Pos
取值
pos=2
pos=3
pos=4
坐标轴的左上角
在坐标轴的左下角
坐标轴的右下角
h = legend(
…
)
返回图例的句柄向量。
[legend_handle,object_handles] = legend(
…
)
返回图例句柄,该句柄为坐标轴定义于图例中的图形对象、
line
对象、
text
对象的句柄。这些句柄允许用户对每个对象进行详细的操作。
例
7-22
>>x = -pi:pi/20:pi;
>>plot(x,(cos(x)).^2,'rd',x,asin(x),'-.b')
>>h = legend('cos2x','asin',2);
图形结果为图
7-22
。
命令
4
title
功能 给当前轴加上标题。每个
axes
图形对象可以有一个标题。标题定位于
axes
的上方正中央。
用法 title('string')
在当前坐标轴上方正中央放置字符串
string
作为标题
title(fname)
先执行能返回字符串的函数
fname
,然后在当前轴上方正中央放置返回的字符串作为标题
title(
…
,'PropertyName',PropertyValue,
…
)
对由命令
title
生成的
text
图形对象的属性进行设置
h = title(
…
)
返回作为标题的
text
对象句柄。
命令
5
text
功能 在当前轴中创建
text
对象。函数
text
是创建
text
图形句柄的低级函数。可用该函数在图形中指定的位置上显示字符串。
用法 text(x,y,'string')
在图形中指定的位置
(x,y)上显示字符串
string
text(x,y,z,'string')
在三维图形空间中的指定位置
(x,y,z)上显示字符串
string
text(x,y,z,’string’.'PropertyName',PropertyValue
…
)
对引号中的文字
string
定位于用坐标轴指定的位置,且对指定的属性进行设置。表
7-6
给出文字属性名、含义及属性值。
表
7-6
定义字符串
Editing
能否对文字进行编辑
有效值:
on
、
off
缺省值:
off
Interpretation
TeX字符是否可用
有效值:tex、none
缺省值:
tex
String
字符串
(
包括
TeX字符串
)
有效值:可见字符串
放置字符串
Extent
text
对象的范围(位置与大小)
有效值:
[
left, bottom, width, height]
HorizontalAlignment
文字水平方向的对齐方式
有效值:
l
eft(文本外框左边对齐,缺省对齐方式)、
c
enter(文本外框中间对齐)、
r
ight(文本外框右边对齐)
缺省值:
left
Position
文字范围的位置
有效值:[x,y,z]直角坐标系
缺省值:
[]
(空矩阵)
Rotation
文字对象的方位角度
有效值:标量(单位为度)
缺省值:
0
Units
文字范围与位置的单位
有效值:
p
ixels (屏幕上的像素点)、normalized (把屏幕看成一个长、宽为
1
的矩形
)、
i
nches(英寸)、
c
entimeters(厘米)、
p
oints (图象点)、data
缺省值:
data
VerticalAlignment
文字垂直方向的对齐方式
有效值:
t
op (文本外框顶上对齐)、
c
ap(文本字符顶上对齐)、
m
iddle(文本外框中间对齐
)
、
baseline(文本字符底线齐)、
b
ottom(文本外框底线对齐)
缺省值:
middle
指定文字字体
FontAngle
设置斜体文字模式
有效值:
normal
(正常字体)、
i
talic(斜体字)、
o
blique(斜角字)
缺省值:
normal
FontName
设置文字字体名称
有效值:用户系统支持的字体名或者字符串FixedWidth。
缺省值为 Helvetica
FontSize
文字字体大小
有效值:结合字体单位的数值
缺省值为:
10 points
FontUnits
设置属性FontSize的单位
有效值:
p
oints (1
点
=1/72
英寸
)
、
n
ormalized(把父对象坐标轴作为一单位长的一个整体;当改变坐标轴的尺寸时,系统会自动改变字体的大小)、
i
nches (英寸)、Centimeters(厘米)、Pixels(像素)
缺省值:
points
FontWeight
设置文字字体的粗细
有效值:light(细字体)、
n
ormal(正常字体)、
d
emi(黑体字)、Bold(黑体字)
缺省值:
normal
控制文字外观
Clipping
设置坐标轴中矩形的剪辑模式
有效值:
on
、
off
on
:当文本超出坐标轴的矩形时,超出的部分不显示;
off:当文本超出坐标轴的矩形时,超出的部分显示。
缺省值:
off
EraseMode
设置显示与擦除文字的模式。这些模式对生成动画系列与改进文字的显示效果很有好处。
有效值:normal、none、 xor、 background
缺省值:normal
SelectionHighlight
设置选中文字是否突出显示
有效值:
on
、
off
缺省值:
on
Visible
设置文字是否可见
有效值:
on
、
off
缺省值:
on
Color
设置文字颜色
有效的颜色值:
ColorSpec
控制对文字对象的访问
HandleVisibility
设置文字对象句柄对其他函数是否可见
有效值:
on
、
callback
、
off
缺省值:
on
HitTest
设置文字对象能否成为当前对象(见图形CurrentObject属性)
有效值:
on
、
off
缺省值:
on
文字对象的一般信息
Children
文字对象的子对象(文字对象没有子对象)
有效值:
[]
(即空矩阵)
Parent
文字对象的父对象(通常为
axes
对象)
有效值:
axes
的句柄
Seleted
设置文字是否显示出“选中”状态
有效值:
on
、
off
缺省值:
off
设置用户指定的标签
有效值:任何字符串
缺省值:’’(即空字符串)
设置图形对象的类型(只读类型)
有效值:字符串’text’
UserData
设置用户指定数据
有效值:任何矩阵
缺省值:
[]
(即空矩阵)
控制回调例行执行程序
BusyAction
设置如何处理对文字回调过程中断的句柄
有效值:
cancel
、
queue
缺省值:
queue
ButtonDownFcn
设置当鼠标在文字上单击时,程序做出的反应(即执行回调程序)
有效值:字符串
缺省值:' '(空字符串)
CreateFcn
设置当文字被创建时,程序做出的反应(即执行的回调程序)
有效值:字符串
缺省值:' '(空字符串)
DeleteFcn
设置当文字被删除(通过关闭或删除操作)时,程序做出的反应(即执行的回调程序)
有效值:字符串
缺省值:' '(空字符串)
Interruptible
设置回调过程是否可中断
有效值:
on
、
off
缺省值:
on
(能中断)
UIContextMenu
设置与文字相关的菜单项
有效值:用户相关菜单句柄
h = text(
…
)
返回文字对象句柄的列向量,每一对象对应一句柄。该命令的其他使用形式中,将随意地返回这个输出参量。
例
7-23
>>plot(0:pi/20:2*pi,sin(0:pi/20:2*pi))
>>text(pi,0,’Zeros Point’)
>>grid on
图形结果为图
7-23
。
命令
6
xlabel
、
ylabel
功能 给
x
、
y
轴贴上标签
用法 xlabel('string')
、
ylabel
(‘string’) 给当前轴对象中的
x
、
y
轴贴标签;注意:若再次执行
xlabel
或
ylabel
命令,则新的标签会覆盖旧的标签。
xlabel(fname)
、
ylabel(fname) 先执行函数
fname
,其返回一个字符串,然后在
x
、
y
轴旁边显示出来;
xlabel(
…
,'PropertyName',PropertyValue,
…
)
、
ylabel(…,’PropertyName’, PropertyValue)指定轴对象中的要控制的属性名和要改变的属性值,这些都是由
xlabel
或
ylabel
创建的
text
图形对象的成对值;
h = xlabel(…)、h = ylabel(…)返回作为标签的
text
对象的句柄。