zoukankan      html  css  js  c++  java
  • Matlab 常用绘图指令(二维图形)

    使用matlab的时候常常会忘掉一些指令,每次都要重新查找,挺麻烦的,这里收集一些常用的绘图指令,供自己和大家以后方便查找和使用。

    1、例子-包含了常用绘图命令

     1 clear
     2 clc
     3 
     4 %%数据准备
     5 x = 0:0.05:1;
     6 y = -x.*log(x);
     7 figure(1);%图像1
     8 set(gcf, 'color',[0.1 0.5 1]);%设置整体图片的背景色
     9 
    10 %%绘制曲线
    11 plot(x,y,'rs-','LineWidth',2,'MarkerEdgeColor','k',...
    12     'MarkerFaceColor','g',...
    13     'MarkerSize',10);
    14 
    15 %%在最大值位置添加文本
    16 xe = 1/exp(1);
    17 ye = -xe*log(xe);
    18 hold on;
    19 plot(xe,ye,'pb', 'MarkerSize', 15,'MarkerEdgeColor','k','MarkerFaceColor','m');
    20 text(xe-0.02,ye+0.03,['最大值点(',num2str(xe,3),',',num2str(ye,3),')'],...
    21     'FontSize',12, 'Color',[0.9 0.1 0.5], 'FontWeight','bold');
    22 
    23 %%设置标题
    24 title('函数y = xlogx','Color','k','FontSize',30);
    25 
    26 %%坐标轴标题设置
    27 xlabel('xlogx','Color','k','FontSize',20);%横轴标题
    28 ylabel('y','Color','k','FontSize',20);%纵轴标题
    29 
    30 %%坐标轴刻度设置
    31 set(gca, 'ytick',x,'yticklabel',x,'xtick',x,...
    32     'xticklabel',x, 'color',[0.8 0.9 0.9],...
    33     'FontSize',10); %xtick就是你要在哪些地方显示刻度,xticklabel就是显示什么内容
    34 
    35 %%坐标轴显示范围设置
    36 axis equal  %强制坐标轴尺度相同,这个放在前面或者后面效果会不一样
    37 xlim([0 1]);%x轴范围
    38 ylim([0 0.5]);%y轴范围
    39 
    40 %%设置Legend
    41 hleg = legend('y=xlogx','Location','SouthWest');%本身不能设置字体的大小,需要通过set进行设置
    42 set(hleg,'FontSize', 15, 'FontAngle','italic','FontWeight','bold',...
    43     'TextColor',[.6,.2,.1],'Color',[1,1,1]);%Color为设置坐标的背景颜色
    44 
    45 %%网格设置
    46 % grid on;%最简单的方式
    47 % set(gca,'XMinorGrid','on','YMinorGrid');%设置最小网格,可以只设置其中的一种
    48 set(gca,'XGrid','on','YGrid','on');%设置大网格,可以只设置其中的一种
    49 
    50 %%全屏显示figure
    51 scrsz = get(0,'ScreenSize');
    52 set(gcf,'Position',scrsz);
    53 
    54 %%保存图像
    55 set(1, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
    56 filename = 'xlogx';
    57 %print(1, '-djpeg', filename);%其他格式 -djpeg,-dpng,-dbmp,-dtiff,-dgif
    58 saveas(1,filename,'png');%保存成图片,其他格式 jpeg,png,bmp,tiff,gif,另一种保存图像的方法
    59 saveas(1,filename,'fig');%保存成figure文件

      以上代码的效果图如下所示:

    2、线型、点标记和颜色

    Matlab绘制曲线,主要包含三类属性,分别是曲线的类型,点标记及其颜色。默认下通过这三种符号的组合形成一个字符串来表现曲线。搭配的形式为:

    ‘线型+颜色+标记点’,例如'-r+'表示曲线为实直线,红颜色,曲线穿插有‘+’的点标记符。如下例子所示:

    1 figure
    2 t = 0:pi/20:2*pi;
    3 plot(t,sin(t),'-.r*');
    4 hold on
    5 plot(t,sin(t-pi/2),'--mo');
    6 plot(t,sin(t-pi),':bs');
    7 hold off

     效果如下图所示:

     

    下面给出了一些常用的线型,点标记和颜色类型:  

    线型 颜色 标识符
    指示符 线型 指示符 线型 指示符 线型
    '-' 实线(默认) r 红色 '+' 加号
    '--' 双划线 g 绿色 'o' 圆圈
    ':' 虚线 b 蓝色 '*' 型号
    '-.' 点划线 c 蓝绿色 '.'
    'none' 无线,不显示 m 洋红色 'x' 叉号
        y 黄色 'square' or 's' 正方形
        k 黑色 'diamond' or 'd' 菱形
        w 白色 '^' 朝上三角符号
            'v' 朝上三角符号
            '>' 朝右三角符号
            '<' 朝左三角符号
            pentagram' or 'p' 五角星
            'hexagram' or 'h''' 六角星
            'none' 无标识符(默认)

     

     3、多图显示在一个Figure中 

    需要用到subplot(m,n,p)函数,m表示行数,n表示列数,p表示第p个图,功能为:表示在m行n列的图上绘制第p个子图像;

    实现代码如下:

     1 x = 0:0.1:20
     2 
     3 %图1
     4 y1 = sin(x).*cos(x)./x;
     5 figure(1);
     6 subplot(2,2,1);%子图1
     7 plot(x,y1,'r');
     8 title('y=sin(x)');
     9 xlabel('x');
    10 ylabel('y');
    11 
    12 %图2
    13 y2 = cos(x)./x;
    14 figure(1);
    15 subplot(2,2,2);%子图2
    16 plot(x,y2,'b');
    17 title('y=cos(x)');
    18 xlabel('x');
    19 ylabel('y');
    20 
    21 %图3
    22 y3 = x.*sin(x);
    23 figure(1);
    24 subplot(2,2,3);%子图3
    25 plot(x,y3,'k');
    26 title('y=cos(x)');
    27 xlabel('x');
    28 ylabel('y');
    29 
    30 %图4
    31 y4 = x.*cos(x.^0.5);
    32 figure(1);
    33 subplot(2,2,4);%子图4
    34 plot(x,y4,'m');
    35 title('y=cos(x)');
    36 xlabel('x');
    37 ylabel('y');
    38 
    39 %%全屏显示figure
    40 scrsz = get(0,'ScreenSize');
    41 set(gcf,'Position',scrsz);
    42 %%设置颜色
    43 set(gcf, 'color',[0.1 0.5 1]);%设置整体图片的背景色
    44 set(1, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
    45 saveas(1,'result','png');%保存成图片,其他格式 jpeg,png,bmp,tiff,gif,另一种保存图像的方法

    效果图如下:

    4、句柄,以及gcf,gca和gco三者的区别

      图形句柄的理解

      Matlab和Windows中的句柄类似,Figure是Matlab中最常用的图像对象。假设现在又多个Figures(我们视他们为对象),想对其中某个Figure进行操作,未完成这样的功能,Matlab给每个FIgure都分配了一个不同的ID(是一个数,例如1,2,3,...),而这个ID就是一个句柄。有了这个句柄我们就可以对指定相应的图形窗口,进行相应的操作,如颜色设置,字体设置和线型设置等。下面是一个关于三个图形操Figure作的例子: 

     1 clc
     2  close all
     3 %%产生三个句柄
     4 figure(1)%产生一个图形figure,并赋予句柄值为1
     5 figure(2)%产生一个图形figure,并赋予句柄值为2
     6 figure(3)%产生一个图形figure,并赋予句柄值为3
     7 
     8 %%操作Figure2
     9 %handle = 2;%这是错误的指定方式
    10 handle = figure(2);%获取figure2的句柄
    11 surf(peaks);
    12 title('Figure2','Color','w','FontSize',20);
    13 
    14 set(handle,'Color',[0,0.5,0.5],'Toolbar','none')
    15 set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
    16 
    17 %%操作Figure1
    18 handle = figure(1);%获取figure1的句柄
    19 set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
    20 surf(peaks);
    21 title('Figure1','Color','w','FontSize',20);
    22 set(handle,'Color',[0,0.0,0.5],'Toolbar','none')
    23 
    24 %%操作Figure3
    25 handle = figure(3);%获取figure3的句柄
    26 set(handle, 'InvertHardCopy', 'off');%设置的背景色有效,如果为on则图形不保存背景色,maltab 默认为 on
    27 surf(peaks);
    28 title('Figure3','Color','w','FontSize',20);
    29 set(handle,'Color',[0.5,0.0,0.5], 'Toolbar','none')
    30 
    31 saveas(1,'1','png');
    32 saveas(2,'2','png');
    33 saveas(3,'3','png');

      结果如下图所示:  

      除了常用的Figure外,Axes也是常用的句柄,还有其他的对象,它们是用以显示图形和用户界面元素的基本元素,但用的较少,下表列出了各种图形对象:

    对象 描述
    Root 对计算机屏幕最高级的对象
    Figure 用来显示图形和用户界面的窗口
    Axes 在窗口中显示图形的轴
    Uicontrol 用户界面控制。执行一个对用户交互作用的函数。
    Uimenu 用户定义窗口菜单
    Uicontextmenu 右键单击对象时弹出的菜单
    Image 二维像素基础图
    Light 影响斑点和表面对象着色的光源
    Line 用于诸如plot,plot3,semilogx,等函数的线
    Patch 带边缘的填充多边形
    Rectangle 二维形状,从矩形到椭圆
    Surface 由x-y平面以上的数据值所作图创建的矩阵数据的三维表示
    Text 字符串

      gcf,gca和gco

      gcf 返回当前Figure 对象的句柄值,可以操作图形的整体效果,如背景色,图形打印设置等
      gca 返回当前axes 对象的句柄值,可以操作坐标轴的效果,包括了坐标轴的刻度,显示范围,字体大小,字体磅数(普通,加粗),字体方向(斜体,正体)
      gco 返回当前鼠标单击的句柄值,该对象可以是除root 对象外的任意图形对象,并且Matlab 会把当前图形对象的句柄值存放在Figure 的CurrentObject属性中。

    4、参考资料

      [1]. http://blog.sina.com.cn/s/blog_675eb4fd0100tvhp.html

      [2]. http://www.cnblogs.com/CBDoctor/archive/2012/04/06/2434072.html

      [3]. http://blog.csdn.net/wguoyong/article/details/6873877

      

  • 相关阅读:
    阅读Unity官方技术blog笔记
    设计模式-具有Model-View-ViewModel设计模式的WPF应用
    关于PureMVC的一点想法
    管窥WOWUIInterface代码
    Lua 5.4引入的新变动
    Unity手册SpriteAtlasManager翻译
    2D向量的数学计算
    提前编译(AOT编译)Wiki翻译
    Lua5.3手册标准库拾遗
    C#异步语法糖的苦与甜
  • 原文地址:https://www.cnblogs.com/cv-pr/p/4664893.html
Copyright © 2011-2022 走看看