Matlab Notes(3): 画图

1. 图形窗口的建立及修饰

1.1 图形注释函数及功能
图形注释函数   图形注释函数功能
Title(‘字符串’)   添加图形标题
xlabel(‘字符串’)   添加横坐标名称
ylabel(‘字符串’)   添加纵坐标名称
text(x,y,’ 字符串’)   在坐标(x,y)处添加注释
gtext(‘字符串’)   用鼠标在图上选择一个位置添加文字
legend(‘字符串’)   添加图例
grid on   打开网格线
grid off   关闭网格线

 

1.2 部分特征字符串及其对应符号
特征字符串   对应符号   特征字符串   对应符号 特征字符串   对应符号
\alpha   α   \Phi   Φ \Lambda   Λ
\beta   β   \Psi   Ψ \Xi   Ξ
\gama   γ   \Omega   Ω \Pi   Π
\deta   δ   \chi   χ \Sigma   Σ
\epsilon   ε   \psi   ψ \Upsilon   Τ
\zeta   ζ   \omega   ω \pi   π
\eta   η   \Gamma   Γ \rho   ρ
\theta   θ   \Delta   Δ \tau   τ
\mu   μ   \Theta   Θ \sigma   σ
\kappa   κ   \nu   ν \upsilon   υ
\lambda   λ   \xi   ξ \phi   φ

(注:如text(.35,.5,’sin({\omega}t+{\betal})’)将得到标注效果sin(ωt+β))

1.2 坐标控制axis

axis([xmin,xmax,ymin,ymax,zmin,zmax])        axis equal:纵横坐标轴采用等长刻度      axis square:产生正方形坐标系(缺省为矩形)     axis auto:使用缺省设置

axis off:取消坐标轴                            axis on:显示坐标轴

axis manual: n以当前的坐标限制图形的绘制

1.3 图形保持hold on/off、添加网格及添加边框

hold on/off命令控制是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间切换。

给坐标加网格线用grid命令来控制。grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。

给坐标轴加边框用box命令来控制。box on/off命令控制是加还是不回边框线,不带参数的box 命令在两种状态之间进行切换。

1.4 图形窗口的分割(subplot)及图形窗口的建立(figure

subplot()函数用于图形窗口的分割,其调用格式为:subplot(m,n,p).该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。在每个绘图区允许以不同的坐标系单独绘制图形。

figure(n)绘制单独的独立图形窗口,n为窗口编号。

2. Matlab绘图

2.1 plot(x,y) 

若x, y 都是向量,则以 x 中元素为横坐标, y 中元素为纵坐标作平面曲线。此时 x, y 必须具有相同长度。

若x, y 都是矩阵,则将x 的列和y 中相应的列相组合,绘制多条平面曲线。此时x, y 必须具有相同的大小。

若x 是向量 y 是矩阵,若x 的长度与y 的行数相等,则将x 与y 中的各列相对应,绘制多条平面曲线;否则,若x 的长度与y 的列数相等,则将x 与y 中的各行相对应,绘制多条平面曲线。此时x 的长度必须等于y 的行数或列数。

plot(y): 绘制向量 y 中元素的线性图

以下标为横坐标,元素值为纵坐标,等价于: x=[1:length(y)];plot(x,y);

思考:plot(Y): 当 Y 是矩阵时的图形是什么?

>>Y=[1 2; 3 3; 2 5]; plot(Y);

>> plot(Y’);

plot(x,y,string)    其中 string 是用 单引号 括起来的字符串,用来指定图形的属性(点、线的形状和颜色)

plot(x1,y1,s1,x2,y2,s2, … ,xn,yn,sn) [注:属性选项可以省略]

等价于:hold on   plot(x1,y1,s1)   plot(x2,y2,s2)      plot(xn,yn,sn)

线条的粗细,字体大小,坐标轴属性等。

例:x=-pi:pi/10:pi;

>> y=sin(x);

>> plot(x,y,’rh:’,’linewidth’,2, ‘markeredgecolor’,’b’, ‘markerfacecolor’,’g’)

linewidth: 指定线条的粗细

markeredgecolor: 指定标记的边缘色    markerfacecolor: 指定标记表面的颜色

注:  1) 属性与属性的值是成对出现的 ; 2) 更多属性参见 plot 的联机帮助

 

线型 点标记   颜色
–   实线

:   虚线

-.  点划线

—   间断线

.   点

o   小圆圈

x   叉子符

+   加号

*   星号

s   方格

d   菱形

^   朝上三角

v   朝下三角

>   朝右三角

<   朝左三角

p   五角星

h   六角星

y(yellow)   黄色

m   棕色

c   青色

r   红色

g   绿色

b(blue)  蓝色

c(cyan)    亮蓝色

w   白色

k(black)   黑色

Plotyy(x1,y1,x2,y2)  具有两个纵坐标标度的图形[不支持颜色线性设定模式]

二维曲线符号绘图: ezplot 

ezplot(f,[a,b])    绘制y=f(x) 在区间a<x<b上的曲线

ezplot(f)    绘制y=f(x) 在区间[-2pi,2pi]上的图形

ezplot(f,g,[a,b])    绘制 x=f(t),y=g(t) 在区间a<t<b上的图形

2.2 二维曲线其它绘图方式

对数坐标图形semilogxsemilogy   调用格式与plot的用法基本相同,区别是semilogx绘图中,x轴用对数标度,在semilogy绘图中,y 轴用对数标度,其调用格式为:

Semilogx(x1,y1,选项1x2,y2,选项2…)   semilogy(x1,y1,选项1x2,y2,选项2…)

极坐标图polar    其调用格式为:polar(theta,rho,选项)   其中theta为极坐标角,rho为极坐标矢径,选项的内容与plot 函数相似.

函数绘图命令fplot(fname,lims)    格式如:fplot(‘表达式’,[xmin,xmax,ymin,ymax],’S’)

绘 制fname指定的函数图形[fname是扩展来的可以用于符号作图的函数],其绘图区域为lims=[xmin,xmax], 也可以用lims= [xmin,xmax,ymin,ymax]指定y 轴的区域.函数表达式可以是一个函数名,如sin,tan等;也可以是带参数的x的函数表达式,如 sin(x),diric(x);还可以是用方括号括起来的函数组,如[sin cos].

2.3 隐函数绘图

ezplot(f(x,y),[a,b,c,d])     绘制f(x,y)=0 在区间a<x<b, c<y<d上的图形

ezplot(f(x,y))     绘制f(x,y)=0 在区间-2pi<x<2pi, -2pi<y<2pi上的图形

特色绘图 (请看示例)

subplot(321);t=0:.3:8;y=exp(-0.5*t).*sin(2*t);stem(t,y);title(‘stem 图示例’)

subplot(322);bar(t,y);axis([0,8,-.5,1]);title(‘bar 示意图’);  subplot(323);t3=0:.2:12;y3=exp(i*t3).*t3;feather(t3,y3);title(‘feather 示意图’); subplot(324);a=10*randn(5,5);hist(a);title(‘title 示意图’);

subplot(325);b=[10,20,30,40,25,55];rose(b);title(‘rose 示意图’);

subplot(326);x=0:.2:5;y=exp(-.5*x).*sin(x);e=.5*(y-1);errorbar(x,y,e);title(‘errorbar示意图’);

2.4 二维统计分析图

直方图bar(x,y,选项        阶梯图stairs(x,y,选项)

杆图 stem(x,y,选项      填充图fill(x1,y1,选项1,x2,y2,选项2,…)

Pie(x)  依据行向量x 画饼图,在饼图中,每一区域所占比例由x/sum(x)决定

Compass(x,y)  依据x,y画向量图(绘制复数的向量图)

matlab三维绘图

2.5 三维曲线绘制plot3

plot3(x,y,z)    plot3(x1,y1,’S1’,x2,y2,’S2’,…,xn,yn,’Sn’)

其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。

三维曲线的绘制meshsurf

产生网格坐标矩阵 meshgrid        其格式为:x=a:d1:b; b=c:d2:d; [X,Y]=meshgrid(x,y);

语句执行后,矩阵X的每一行都向量x,行等于向量y的元素的个数,矩阵Y 的每一列都是向量y,列数等于向量x的元素的个数。

mesh(x,y,z,c)

surf(x,y,z,c)

其中x,y,z是维数相同的矩阵,x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围,若不输入c,则默认c=z.

此外,还有带等高线的三维网格曲面函数meshc带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是mesh还在xy平面上绘制曲面在z 轴方向的等高线,meshz还在xy平面上绘制曲面的底座。

ezmesh和ezsurf用于三维曲面作图的符号函数,其调用格式为:ezmesh(‘x’,’y’,’z’) 其中x=x(s,t),y=y(s,t),z=z(s,t).画图区域默认为 -2*pi<s<2*pi且 -2*pi<t<2*pi.

或者用格式:ezmesh(‘x’,’y’,’z’,[smin,smax,tmin,tmax])。ezsurf调用格式与ezmesh相似。

标准三维曲面函数:

sphere是专门绘制圆球体的函数,其调用格式为:[x,y,z]=sphere(n) 此函数生成三个(n+1)×(n+1)矩阵,再利用函数生成单位球面。

[x,y,z]=sphere     此形式用了默认值n=20

sphere(n)          此形式绘制球面图,不返回值

可以通过[x,y,z]=sphere;X=a*x;Y=a*y;Z=a*z;surf(X,Y,Z)将单位球放大a倍。

cylinder函数的调用格式:[x,y,z]=cylinder(R,n)

peaks为多峰函数,常用于三维曲面演示,格式为:peaks(n)

其它三维图形的绘制

函数 功能 格式
bar3 绘制三维条形图 bar3(y)
stem3 绘制离散序列数据的三维杆图 stem3(z)

stem3(x,y,z0

pie3 绘制三维饼图 pie3(x)
fill3 等效于三维的函数fill,可在三维空间内绘制出填充过的多边形 fill3(x,y,z,s)

 

3. 三维图形的修饰处理

视点处理函数view,其调用格式为:view(az,el)   其中az为方位角,el为仰角,它们均以度为单位。系统缺省的视点定义为方位角-37.5,仰角30.

图形旋转函数rotate,其调用格式为:rotate(h,[theta,phi],alpha) 或rotate(h,[x,y,z],alpha)

例如:h=surf(peaks(40));   rorate(h,[1 0 0],180);

三维表面图形的着色   三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式

shading faceted 命令将每个网格片用与其高度对应的颜色进行着色,但网格线仍保留着,其颜色是黑色,这是系统的缺省着色方式。

shading flat 命令将每一个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。

shading interp 命令将每个网格片内采用颜色插值处理,得出的表面图显得最光滑。

光照处理    MATLAB提供了灯光设置的函数,其调用格式为:light(‘Color’,选项1,’Style’,选项2,’position’,选项3)  例如:light(‘posi’,[1,0,1]);

色彩处理函数

MATLAB除用字符表示颜色外,还可以用含有3个元素的向量[R G B]表示颜色。向量元素在[0,1]范围内取值,3种元素分别表示红、绿、蓝3种颜色的相对亮度,称为RGB三元组。

色图(colormap)是m*3的数值矩阵,它的每一行是RGB三元组,色图矩阵可以人为的生成,也可以调用MATLAB提供的函数来定义色图矩阵,设定函数为:

colormap(COLOR)    设置色图变量COLOR 为m*3色图矩阵

colormap(‘Default’)   设置色图为默认值

常用的颜色数据

颜色数据  
[0 0 0] 黑色(black
[0 0 1] 蓝色(blue)
[0 1 0] 绿色(green)
[0 1 1] 青色(cyan)
[1 0 0] 红色(red)
[1 0 1] 深红(magenta)
[1 1 0] 黄色(yellow)
[1 1 1] 白色(white)
[0.5 0.5 0.5] 灰色(gray)
[0.5 0 0] 暗红色(wine)
[1 0.62 0.4] 铜色(xopper)
[0.49 1 0.38] 亮蓝(cyan)

 

常用的色图函数

色图函数 说明 色图函数 说明
cool 冷色 gray 灰色
hot 暖色 bone 蓝色调灰色图
hsv 饱和渐变色图 pink 粉红色
jet 饱和渐变色图 flag 红白蓝黑交替
copper 铜色 prism 光谱