matlab画图

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、点形标记符    点形

          加号          圆圈          星号.          实心点         叉号

         正方形         钻石形         上三角形v         下三角形

        右三角形<        左三角形p        五角星形        六角星形

3、颜色标记符    颜色

       红 g    绿b      蓝c      蓝绿m    紫红    黄k    黑      白 

二、描绘不同的直线

当我们需要对不同类别的数据点进行连线的时候,可以设置以下属性来区分不同类别的点和相应的直线:

(1)LineStyle:线形(2)MarkerSymbol:点形(3)Color:颜色

例如:  plot(x,y,'-.or','MarkerFaceColor','g')

其中线形为点横线,数据点形状为圆圈,线条和数据点边缘的颜色都是红色,数据点的填充颜色为绿色。

三、描绘数据点的分布

有时候我们希望画出数据点的分布情况,不需要画出这些点之间的连线,则可以按以下方式实现:

    plot(x,y,'d')

即只定义数据点的点形。

最后给出一个例子说明怎样运用以上属性来画图:

plot(t,sin(2*t),'-mo','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor',[.49 1 .63],'MarkerSize',12)

第10章  MATLAB图形句柄10.1  图形对象及其句柄

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  或  句柄变量=figure

要关闭图形窗口,使用close函数,其调用格式为:

close(窗口句柄)

另外,close all 命令可以关闭所有的图形窗口,clf命令则是清除当前图形窗口的内容,但不关闭窗口。

MATLAB为每个图形窗口提供了很多属性。这些属性及其取值控制着图形窗口对象。除公共属性外,其他常用属性如下:MenuBar属性、Name属性、NumberTitle属性、Resize属性、Position属性、Units属性、Color属性、Pointer属性、KeyPressFcn(键盘键按下响应)、WindowButtonDownFcn(鼠标键按下响应)、WindowButtonMotionFcn(鼠标移动响应)及WindowButtonUpFcn(鼠标键释放响应)等。

例10-3  建立一个图形窗口。该图形窗口没有菜单条,标题名称为“我的图形窗口”,起始于屏幕左下角、宽度和高度分别为450像素点和250像素点,背景颜色为绿色,且当用户从键盘按下任意一个键时,将在该图形窗口绘制出正弦曲线。

10.3.2  坐标轴对象

建立坐标轴对象使用axes函数,其调用格式为:

句柄变量=axes(属性名1,属性值1,属性名2,属性值2,…)

调用axes函数用指定的属性在当前图形窗口创建坐标轴,并将其句柄赋给左边的句柄变量。也可以使用axes 函数按MATLAB缺省的属性值在当前图形窗口创建坐标轴:

axes  或  句柄变量= 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  利用曲面对象绘制三维曲面z=sin(x)。

所有对象都有属性来定义它们的特征,正是通过设定这些属性来修正图形显示的方式。尽管许多属性所有的对象都有,但与每一种对象类型(比如坐标轴,线,曲面)相关的属性列表都是独一无二的。对象属性可包括诸如对象的位置、颜色、类型、父对象、子对象及其它内容。每一个不同对象都有和它相关的属性,可以改变这些属性而不影响同类型的其他对象。和每一种对象类型(图形,坐标轴,线,文本,曲面,补片和图象)相关的完整的属性列表在本章的后面给出。

       对象属性包括属性名和与它们相联关的值。属性名是字符串,它们通常按混合格式显示,每个词的开头字母大写,比如:’ LineStyle ‘ 。但是,MATLAB识别一个属性时是不分大小写的。另外,只要用足够多的字符来唯一地辨识一个属性名即可。例如,坐标轴对象中的位置属性可以用 ‘ Position ‘, ‘ position ‘ ,甚至是 ‘ pos ‘来调用。

       当建立一个对象时,它用一组缺省属性值,该值可以用两种方法来改变。可以用{属性名,属性值}对来建立对象生成函数;或者在对象建立后改变属性。前一种方法的例子是:

       » Hf_1=figure( ‘color’, ‘white’ )

       它用缺省的属性值建立一个新的图形窗口,只是背景颜色被设为白色而不是缺省的黑色。

       为了获得和改变句柄图形对象的属性只需要两个函数。函数get返回某些对象属性的当前值。使用函数get的最简单语法是get(handle, ‘ PropertyName’ )。例如:

       » p=get(Hf_1, ‘position’ )

返回具有句柄Hf_1图形窗口的位置向量。

       » c=get(Hl_a, ‘color’ )

返回具有句柄Hl_a对象的颜色。

       函数set改变句柄图形对象属性,使用语法set(handle, ‘PropertyName’ ,value)。例如:

       » set(Hf_1, ‘Position’ ,p_vect)

将具有句柄Hf_1的图形位置设为向量p_vect所指定的值。同样

       » set(Hl_a, ‘color’ , ‘r’ )

将具有句柄Hl_a的对象的颜色设置成红色。

       一般情况下,函数set可以有任意数目的( ‘PropertyName’ ,PropertyValue)对。比如:

       » set(Hl_a, ‘Color’ , ‘r’ , ‘Linewidth’ ,2, ‘LinStyle’ , ‘--’ )

将具有句柄Hl_a的线条变成红色,线宽为2点,线型为破折号。

       除了这些主要功能,函数set和函数get还能提供帮助。例如» set(handle, ‘PropertyName’ )返回一个可赋给由handle所描述对象的属性值列表。例如:

       » set(Hf_1, ‘Units’ )

       [inches|centimeters|normalized|points|{pixels}]

表明由Hf_1所引用的图形的 ‘Unites’属性是五个可允许的字符串,而其中 ‘pixels’ 是缺省值。

       如果指定一个没有固定值的属性,那么,MATLAB就会通知如下:

       » set(Hf_1, ‘Position’ )

       figure’s  ‘Position’  property  does  not  have   fixed  set  of  property  values。

       除了set命令,句柄图形对象创建函数(例如figure,axis,line等等)接受多个属性名和属性值对。例如:

       » figure( ‘Color’ , ‘blue’ , ‘NumberTitle’ , ‘off’ , ‘Name’ , ‘My  Figure’ )

创建一个图形窗口,背景为兰色,标有 ‘My  Figure’ 而不是缺省标题 ‘Figure  No.  1’。

所创建的线条中的 ‘Parent’属性就是包含线条的坐标轴的句柄。而且所显示的图形列表被分为两组。在空行上的第一组,列出了该对象的独有属性,而空行下的第二组列出所有的对象共有的属性。注意到函数set和函数get返回不同的属性列表。函数set只列出可以用set命令改变的属性,而get命令列出所有对象的属性。在上面的例子中,函数get列出了 ‘Children’和 ‘Type’ 属性,而set命令却没有。这一类属性只可读,但不能被改变,它们叫做只读属性。

       与每一个对象有关的属性数目是固定的,但不同的对象类型有不同数目的属性。象上面所显示的,一个线条对象列出了16个属性,而一个坐标轴对象列出了64个属性。显然,透彻地说明和描述所有对象类型的全部属性超出本书的范围。但是,其中的很多属性本书以后要详细讨论,并且列出全部属性。

       除了函数set和get,MATLAB还提供了另外两个函数来操作对象和它们的属性。任意对象和它们的子对象可以用 » delete(handle) 来删除。同样 » reset(handle) 将与句柄有关的全部对象属性(除了 ‘Position’ 属性)重新设置为该对象类型的缺省值。

一、螺旋线

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('静态螺旋线');

 Matlab画函数图像 - 往事随风 - 行者随风

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)

    set(h,'xdata',sin(t(i)),'ydata',cos(t(i)),'zdata',t(i));

    drawnow

    pause(0.01)

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('圆柱螺旋线')

Matlab画函数图像 - 往事随风 - 行者随风

 

二、旋转抛物面

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')   

Matlab画函数图像 - 往事随风 - 行者随风

三、椭圆柱面

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                  %使x,y轴比例一致

xlabel('x轴');ylabel('y轴');zlabel('z轴');                   %添加坐标轴说明

title('椭圆柱面')          %添加标题

Matlab画函数图像 - 往事随风 - 行者随风

四、椭圆抛物面

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')

Matlab画函数图像 - 往事随风 - 行者随风

五、'双叶双曲面

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('双叶双曲面')

Matlab画函数图像 - 往事随风 - 行者随风

六、双曲柱面

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('双曲柱面')

Matlab画函数图像 - 往事随风 - 行者随风

七、双曲抛物面(马鞍面)

[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')

 Matlab画函数图像 - 往事随风 - 行者随风

八、抛物柱面

[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')

 Matlab画函数图像 - 往事随风 - 行者随风

九、环面

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('环面')

Matlab画函数图像 - 往事随风 - 行者随风

十、椭球

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('椭球')

Matlab画函数图像 - 往事随风 - 行者随风

十一、单叶双曲面

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('单叶双曲面')

Matlab画函数图像 - 往事随风 - 行者随风

十二、旋转单叶双曲面

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('旋转单叶双曲面')

Matlab画函数图像 - 往事随风 - 行者随风

十三、圆柱面

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函数所得圆柱面')

Matlab画函数图像 - 往事随风 - 行者随风

下面给出用colormap()改变图像颜色的例子:(用了灯光效果"shading interp")

 colormap();     %hot/cool/copper/gray/hsv/spring/summer/winter...

Matlab画函数图像 - 往事随风 - 行者随风

                                    colormap(hsv)

Matlab画函数图像 - 往事随风 - 行者随风

                                               colormap(hot)Matlab画函数图像 - 往事随风 - 行者随风

                                     colormap(gray)Matlab画函数图像 - 往事随风 - 行者随风

                                              colormap(cool)

Matlab画函数图像 - 往事随风 - 行者随风

                                              colormap(copper)

   下面做了旋转("view([ ])")、灯光(“shading interp”)、透明(“alpha()”)处理:

 

 

Matlab画函数图像 - 往事随风 - 行者随风

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值