欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Matlab(科伊恩)学习4——初阶绘图

程序员文章站 2022-05-22 13:06:23
...

四、初阶绘图

  1. 数据绘制

    1.1 plot()——绘制图像

    #plot(x,y)-对应每个(x,y);plot(y)-对应的x为 1,2,3...
    
    #Example
    >> plot(cos(0:pi/20:2*pi));
    

    Matlab(科伊恩)学习4——初阶绘图

    >> plot(cos(0:pi/20:2*pi));
       plot(sin(0:pi/20:2*pi)); #matlab在默认作图时,会覆盖上一张图像,即此处的cos,只显示sin图像
    

    1.2 hold on/off——保留/覆盖

    #通过hold on使多个曲线保留在一个图像上,而hold off刚好相反,取消前图
    >> hold on
       plot(cos(0:pi/20:2*pi));
       plot(sin(0:pi/20:2*pi));
       hold off
    

    Matlab(科伊恩)学习4——初阶绘图

  2. 绘制风格

    2.1 曲线格式

    plot(x,y,'str')-在str中设置格式
    

    Matlab(科伊恩)学习4——初阶绘图 2.2 曲线名称

    legend('L1','L2',...)-标出曲线的名称
    
    #legend里面图例的顺序与plot里面曲线绘制的先后顺序一致,缺省时默认从左到右依次给图例
    >> x=0:0.5:4*pi;
       y=sin(x); h=cos(x); w=1./(1+exp(-x));
       g=(1/(2*pi*2)^0.5).*exp((-1.*(x-2*pi).^2)./(2*2^2));
       plot(x,y,'bd-',x,h,'gp:',x,w,'ro-',x,g,'c^-');
       legend('sin(x)','cos(x)','Sigmoid','Gauss function');
    

    Matlab(科伊恩)学习4——初阶绘图 2.3 图像的标题与坐标轴

    title()-添加Figure标题; ?label()-添加坐标轴名称
    
    #title('str')直接添加
    #xlabel()-添加x轴名称;ylabel()-添加y轴名称;zlabel()-添加z轴名称
    
    >> x = 0:0.1:2*pi; y1 = sin(x); y2 = exp(-x);
       plot(x, y1, '--*', x, y2, ':o');
       xlabel('t = 0 to 2\pi');
       ylabel('values of sin(t) and e^{-x}')
       title('Function Plots of sin(t) and e^{-x}');
       legend('sin(t)','e^{-x}');
    

    Matlab(科伊恩)学习4——初阶绘图
    2.4 LaTex语法的图像标注

    text()-在某一位置进行text备注 ;annotation()-
    
    #Example
    >> x = linspace(0,3); y = x.^2.*sin(x); plot(x,y);
    
    >> line([2,2],[0,2^2*sin(2)]);
       %line([x1,x2],[y1,y2])-绘制从(x1,y1)→(x2,y2)的一条直线
       
    >> str = '$$ \int_{0}^{2} x^2\sin(x) dx $$';  
       % $$...$$-LaTex中表示str的起止;\int-积分;    _0}-下标0;^{2}-上标2;x^2/sinx-被积函数;   dx-微分符号
       
    >> text(0.25,2.5,str,'Interpreter','latex');                                              %text[x,y,字符,'Interpreter','latex'],'Interpreter'与'latex'固定用法,表示LaTex语法
       
    >> annotation('arrow','X',[0.32,0.5],'Y',[0.6,0.4]);
       %'arrow'-标注为箭头形式;'X','Y'-箭头位置相对整个方框的比例,[0.32,0.5]-方框32%→50%区域、   [0.6,0.4]-方框60%→40%区域
    

    Matlab(科伊恩)学习4——初阶绘图

    2.5 Figure微调

    一些配置:

    字体;字号;线宽;Axis limit-坐标轴限制;Tick position;Tick label(Tick指的坐标轴上一个个单位区间)

    2.6 绘图项目

    Matlab(科伊恩)学习4——初阶绘图

    2.6.1 Figure性质

    Matlab(科伊恩)学习4——初阶绘图

    2.6.2 确定目标的句柄

    1)自定创建

    >> h=plot(x,y);  #plot函数会返回line的句柄(辨识码、指针),h指向的就是这一条曲线
    >> gca; #返回Axes的句柄
    >> gcf; #返回Figure的句柄
    

    2)工具函数

    Function Purpose
    gca Return the handle of the “current” axes
    gcf Return the handle of the “current” figure
    allchild Find all children of specified objects
    ancestor Find ancestor of graphics object
    delete Delete an object
    findall Find all graphics objects

    Matlab(科伊恩)学习4——初阶绘图
    2.6.3 获取/修饰性质

    ????get()-To fetch properties,use
    ????set()-To modify properties,use
    
    >>x=linspace(0,2*pi,1000);
      y=sin(x); plot(x,y);
      h=plot(x,y);
      get(h)
      
    --→ AlignVertexCenters: 'off'
                Annotation: [1×1 matlab.graphics.eventdata.Annotation]
              BeingDeleted: 'off'
                BusyAction: 'queue'
             ButtonDownFcn: ''
                  Children: [0×0 GraphicsPlaceholder]
                  Clipping: 'on'
                     Color: [0 0.4470 0.7410]
                 ColorMode: 'auto'
                 CreateFcn: ''
           DataTipTemplate: [1×1 matlab.graphics.datatip.DataTipTemplate]
                 DeleteFcn: ''
               DisplayName: ''
          HandleVisibility: 'on'
                   HitTest: 'on'
             Interruptible: 'on'
                  LineJoin: 'round'
                 LineStyle: '-'
             LineStyleMode: 'auto'
                 LineWidth: 0.5000
                    Marker: 'none'
           MarkerEdgeColor: 'auto'
           MarkerFaceColor: 'none'
             MarkerIndices: [1×1000 uint64]
                MarkerMode: 'auto'
                MarkerSize: 6
                    Parent: [1×1 Axes]
             PickableParts: 'visible'
                  Selected: 'off'
        SelectionHighlight: 'on'
                       Tag: ''
                      Type: 'line'
             UIContextMenu: [0×0 GraphicsPlaceholder]
                  UserData: []
                   Visible: 'on'
                     XData: [1×1000 double]
                 XDataMode: 'manual'
               XDataSource: ''
                     YData: [1×1000 double]
               YDataSource: ''
                     ZData: [1×0 double]
               ZDataSource: ''
    
    >> get(gca); #返回Figure参数
    >> get(gcf); #返回Axes参数
    
    #通过返回的参数,我们可以指导line、figure、axes里面的具体参数,进而根据需求进行更改
    

    2.6.4 设置Axes Limits

    >> set(gca,'XLim',[0,2*pi]);
    >> set(gca,'YLim',[-1.2,1.2]);
    
    #Alternative
    >> xlim([0,2*pi]);
    >> ylim([-1.2,1.2]);
    

    2.6.5 设置Font和Tick of Axes

    >> set(gca,'FontSize',25);
    
    >> set(gca,'XTick',0:pi/2:2*pi);   #XTick-坐标轴刻度间距
    >> set(gca,'XTickLabel',0:90:360); #XTickLabel-坐标轴刻度标记
    >> set(gca,'XTickLabel',{'0','\pi/2','\pi','3\pi/2','2\pi'}); #自定义刻度标记
    

    2.6.6 Line的自定义

    >> set(h,'LineStyle','-.','LineWidth',7.0,'Color','g'); #通过set对plot的句柄h进行设置
    #Alternative
    >> plot(x,y,'-.g','LineWidth',7.0); #在plot时直接设置
    

    2.6.7 标记自定义

    >> x=rand(20,1); 
       set(gca, 'FontSize', 18);
       plot(x,'-md','LineWidth', 2, 'MarkerEdgeColor', 'k',... #edge为驻点边,face为驻点内部
       'MarkerFaceColor', 'g', 'MarkerSize', 10);
       xlim([1, 20]);
    

    Matlab(科伊恩)学习4——初阶绘图

    2.7 多图像绘制——Multiple Figures

    >> x = -10:0.1:10;
       y1 = x.^2 - 8;
       y2 = exp(x);
       figure, plot(x,y1); #通过figure可以同时绘制并弹出多个Figure窗口
       figure, plot(x,y2);
       #此时要慎重使用gca、gcf,它们指向的是最新的Figure
    

    2.8 Figure位置与尺寸设置

    figure('Position',[left,bottom,width,height]); #position的设置,顺便也设置了size
    

    2.9 子绘图区域——Figure里划分子figure

    subplot(m,n,1); # 1 表示的是mxn区块里的位置
    

    Matlab(科伊恩)学习4——初阶绘图

    >>t = 0:0.1:2*pi; x = 3*cos(t); y = sin(t);
      subplot(2, 2, 1); plot(x, y); axis normal #坐标轴框恢复为全尺寸,并将单位刻度的所有限制取消
      subplot(2, 2, 2); plot(x, y); axis square #坐标轴设置为正方形
      subplot(2, 2, 3); plot(x, y); axis equal #坐标轴具有均匀的刻度间隔
      subplot(2, 2, 4); plot(x, y); axis equal tight  #坐标轴与曲线边缘切齐
    

    Matlab(科伊恩)学习4——初阶绘图

    2.10 设置Grid,Box and Axis

    #注意是针对单一的Figure
    grid on/off 网格线
    box on/off 右上角两根轴
    axis on/off 轴线以及背景,只留曲线
    axis normal/ square/ equal/ equal tight 见上例
    axis image 使Axis与曲线紧密相切
    axis ij 矩阵轴,i轴竖直,起点在上;j轴水平,起点在左
    axis xy 笛卡尔坐标系,坐标原点再左下角

    2.11 将Figure保存为File

    saveas(gcf,'<filename>','<formattype>');
    

    Matlab(科伊恩)学习4——初阶绘图