http://jiangnan200409.blog.163.com/blog/static/590024882010840226416/
一、Matlab绘图中用到的直线属性包括:
(1)LineStyle:线形(2)LineWidth:线宽(3)Color:颜色(4)MarkerType:标记点的形状(5)MarkerSize:标记点的大小(6)MarkerFaceColor:标记点内部的填充颜色(7)MarkerEdgeColor:标记点边缘的颜色
1、线形标记符
2、点形标记符
3、颜色标记符
二、描绘不同的直线
当我们需要对不同类别的数据点进行连线的时候,可以设置以下属性来区分不同类别的点和相应的直线:
(1)LineStyle:线形(2)MarkerSymbol:点形(3)Color:颜色
例如:
其中线形为点横线,数据点形状为圆圈,线条和数据点边缘的颜色都是红色,数据点的填充颜色为绿色。
三、描绘数据点的分布
有时候我们希望画出数据点的分布情况,不需要画出这些点之间的连线,则可以按以下方式实现:
即只定义数据点的点形。
最后给出一个例子说明怎样运用以上属性来画图:
plot(t,sin(2*t),'-mo','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor',[.49 1 .63],'MarkerSize',12)
第10章
1.图形对象
MATLAB的图形对象包括计算机屏幕、图形窗口、坐标轴、用户菜单、用户控件、曲线、曲面、文字、图像、光源、区域块和方框等。系统将每一个对象按树型结构组织起来。
2.图形对象句柄
MATLAB在创建每一个图形对象时,都为该对象分配唯一的一个值,称其为图形对象句柄(Handle)。句柄是图形对象的唯一标识符,不同对象的句柄不可能重复和混淆。
计算机屏幕作为根对象由系统自动建立,其句柄值为0,而图形窗口对象的句柄值为一正整数,并显示在该窗口的标题栏,其他图形对象的句柄为浮点数。MATLAB提供了若干个函数用于获取已有图形对象的句柄。
例10-1
10.2
1.属性名与属性值
MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值称为属性值。
2.属性的操作
set函数的调用格式为:
set(句柄,属性名1,属性值1,属性名2,属性值2,…)
其中句柄用于指明要操作的图形对象。如果在调用set函数时省略全部属性名和属性值,则将显示出句柄所有的允许属性。
get函数的调用格式为:
V=get(句柄,属性名)
其中V是返回的属性值。如果在调用get函数时省略属性名,则将返回句柄所有的属性值。
3.对象的公共属性
对象常用的公共属性:Children属性、Parent属性、Tag属性、Type属性、UserData属性、Visible属性、ButtonDownFcn属性、CreateFcn属性、DeleteFcn属性。
例10-2
10.3
10.3.1
建立图形窗口对象使用figure函数,其调用格式为:
句柄变量=figure(属性名1,属性值1,属性名2,属性值2,…)
MATLAB通过对属性的操作来改变图形窗口的形式。也可以使用figure函数按MATLAB缺省的属性值建立图形窗口:
figure
要关闭图形窗口,使用close函数,其调用格式为:
close(窗口句柄)
另外,close all 命令可以关闭所有的图形窗口,clf命令则是清除当前图形窗口的内容,但不关闭窗口。
MATLAB为每个图形窗口提供了很多属性。这些属性及其取值控制着图形窗口对象。除公共属性外,其他常用属性如下:MenuBar属性、Name属性、NumberTitle属性、Resize属性、Position属性、Units属性、Color属性、Pointer属性、KeyPressFcn(键盘键按下响应)、WindowButtonDownFcn(鼠标键按下响应)、WindowButtonMotionFcn(鼠标移动响应)及WindowButtonUpFcn(鼠标键释放响应)等。
例10-3
10.3.2
建立坐标轴对象使用axes函数,其调用格式为:
句柄变量=axes(属性名1,属性值1,属性名2,属性值2,…)
调用axes函数用指定的属性在当前图形窗口创建坐标轴,并将其句柄赋给左边的句柄变量。也可以使用axes 函数按MATLAB缺省的属性值在当前图形窗口创建坐标轴:
axes
用axes 函数建立坐标轴之后,还可以调用axes 函数将之设定为当前坐标轴,且坐标轴所在的图形窗口自动成为当前图形窗口:
axes(坐标轴句柄)
MATLAB为每个坐标轴对象提供了很多属性。除公共属性外,其他常用属性如下:Box属性、GridLineStyle属性、Position属性、Units属性、Title属性等。
例10-4
利用axes函数可以在不影响图形窗口上其他坐标轴的前提下建立一个新的坐标轴,从而实现图形窗口的任意分割。
10.3.3
建立曲线对象使用line函数,其调用格式为:
句柄变量=line(x,y,z,属性名1,属性值1,属性名2,属性值2,…)
其中对x,y,z的解释与高层曲线函数plot和plot3等一样,其余的解释与前面介绍过的figure和axes函数类似。
每个曲线对象也具有很多属性。除公共属性外,其他常用属性如下:Color属性、LineStyle属性、LineWidth属性、Marker属性、MarkerSize属性等。
例10-5
10.3.4
使用text函数可以根据指定位置和属性值添加文字说明,并保存句柄。该函数的调用格式为:
句柄变量=text(x,y,z,'说明文字',属性名1,属性值1,属性名2,属性值2,…)
其中说明文字中除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符。
除公共属性外,文字对象的其他常用属性如下:Color属性、String属性、Interpreter属性、FontSize属性、Rotation属性。
例10-6
10.3.5
建立曲面对象使用surface函数,其调用格式为:
句柄变量=surface(x,y,z,属性名1,属性值1,属性名2,属性值2,…)
其中对x,y,z的解释与高层曲面函数mesh和surf等一样,其余的解释与前面介绍过的figure和axes等函数类似。
每个曲面对象也具有很多属性。除公共属性外,其他常用属性如下:EdgeColor属性、FaceColor属性、LineStyle属性、LineWidth属性、Marker属性、MarkerSize属性等。
例10-7
所有对象都有属性来定义它们的特征,正是通过设定这些属性来修正图形显示的方式。尽管许多属性所有的对象都有,但与每一种对象类型(比如坐标轴,线,曲面)相关的属性列表都是独一无二的。对象属性可包括诸如对象的位置、颜色、类型、父对象、子对象及其它内容。每一个不同对象都有和它相关的属性,可以改变这些属性而不影响同类型的其他对象。和每一种对象类型(图形,坐标轴,线,文本,曲面,补片和图象)相关的完整的属性列表在本章的后面给出。
返回具有句柄Hf_1图形窗口的位置向量。
返回具有句柄Hl_a对象的颜色。
将具有句柄Hf_1的图形位置设为向量p_vect所指定的值。同样
将具有句柄Hl_a的对象的颜色设置成红色。
将具有句柄Hl_a的线条变成红色,线宽为2点,线型为破折号。
表明由Hf_1所引用的图形的 ‘Unites’属性是五个可允许的字符串,而其中 ‘pixels’ 是缺省值。
创建一个图形窗口,背景为兰色,标有 ‘My
所创建的线条中的 ‘Parent’属性就是包含线条的坐标轴的句柄。而且所显示的图形列表被分为两组。在空行上的第一组,列出了该对象的独有属性,而空行下的第二组列出所有的对象共有的属性。注意到函数set和函数get返回不同的属性列表。函数set只列出可以用set命令改变的属性,而get命令列出所有对象的属性。在上面的例子中,函数get列出了 ‘Children’和 ‘Type’ 属性,而set命令却没有。这一类属性只可读,但不能被改变,它们叫做只读属性。
一、螺旋线
1.静态螺旋线
a=0:0.1:20*pi;
h=plot3(a.*cos(a),a.*sin(a),2.*a,'b','linewidth',2);
axis([-50,50,-50,50,0,150]);
grid on
set(h,'erasemode','none','markersize',22);
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('静态螺旋线');
2.动态螺旋线
t=0:0.1:10*pi;
i=1;
h=plot3(sin(t(i)),cos(t(i)),t(i),'*','erasemode','none');
grid on
axis([-2 2 -2 2 0 35])
for i=2:length(t)
end
title('动态螺旋线');
(图略)
3.圆柱螺旋线
t=0:0.1:10*pi;
x=r.*cos(t);
y=r.*sin(t);
z=t;
plot3(x,y,z,'h','linewidth',2);
grid on
axis('square')
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('圆柱螺旋线')
二、旋转抛物面
b=0:0.2:2*pi;
[X,Y]=meshgrid(-6:0.1:6);
Z=(X.^2+Y.^2)./4;
meshc(X,Y,Z);
axis('square')
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('旋转抛物面')
或直接用:ezsurfc('(X.^2+Y.^2)./4')
三、椭圆柱面
load clown
ezsurf('(2*cos(u))','4*sin(u)','v',[0,2*pi,0,2*pi])
view(-105,40)
shading interp
colormap(map)
grid on
axis equal
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('椭圆柱面')
四、椭圆抛物面
b=0:0.2:2*pi;
[X,Y]=meshgrid(-6:0.1:6);
Z=X.^2./9+Y.^2./4;
meshc(X,Y,Z);
axis('square')
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('椭圆抛物面')
或直接用:ezsurfc('X.^2./9+Y.^2./4')
五、'双叶双曲面
ezsurf('8*tan(u)*cos(v)','8.*tan(u)*sin(v)','2.*sec(u)',[-pi./2,3*pi./2,0,2*pi])
axis equal
grid on
axis square
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('双叶双曲面')
六、双曲柱面
load clown
ezsurf('2*sec(u)','2*tan(u)','v',[-pi/2,pi/2,-3*pi,3*pi])
hold on
ezsurf('2*sec(u)','2*tan(u)','v',[pi/2,3*pi/2,-3*pi,3*pi])
colormap(map)
shading interp
view(-15,30)
axis equal
grid on
axis equal
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('双曲柱面')
七、双曲抛物面(马鞍面)
[X,Y]=meshgrid(-7:0.1:7);
Z=X.^2./8-Y.^2./6;
meshc(X,Y,Z);
view(85,20)
axis('square')
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('双曲抛物面')
或直接用:ezsurfc('X.^2./8-Y.^2./6')
八、抛物柱面
[X,Y]=meshgrid(-7:0.1:7);
Z=Y.^2./8;
h=mesh(Z);
rotate(h,[1 0 1],180)
%axis([-8,8,-8,8,-2,6]);
axis('square')
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('抛物柱面')
或直接用:ezsurfc('Y.^2./8')
九、环面
ezmesh('(5+2*cos(u))*cos(v)','(5+2*cos(u))*sin(v)','2*sin(u)',[0,2*pi,0,2*pi])
axis equal
grid on
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('环面')
十、椭球
ezsurfc('(5*cos(u))*sin(v)','(3*sin(u))*sin(v)','4*cos(v)',[0,2*pi,0,2*pi])
axis equal
grid on
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('椭球')
十一、单叶双曲面
ezsurf('4*sec(u)*cos(v)','2.*sec(u)*sin(v)','3.*tan(u)',[-pi./2,pi./2,0,2*pi])
axis equal
grid on
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('单叶双曲面')
十二、旋转单叶双曲面
load clown
ezsurf('8*sec(u)*cos(v)','8.*sec(u)*sin(v)','2.*tan(u)',[-pi./2,pi./2,0,2*pi])
colormap(map)
view(-175,30)
%alpha(.2)
axis equal
grid on
axis square
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('旋转单叶双曲面')
十三、圆柱面
subplot(1,2,1)
ezsurf('(2*cos(u))','2*sin(u)','v',[0,2*pi,0,2*pi])
grid on
shading interp
axis equal
xlabel('x轴');ylabel('y轴');zlabel('z轴');
title('圆柱面')
subplot(1,2,2)
cylinder(30)
shading interp
axis square
title('调用cylinder函数所得圆柱面')
下面给出用colormap()改变图像颜色的例子:(用了灯光效果"shading interp")