相关文章推荐
从未表白的脆皮肠  ·  python ...·  3 天前    · 
爽快的电影票  ·  Oracle ...·  2 月前    · 
会搭讪的茄子  ·  解决Kubelet ...·  3 月前    · 
体贴的充电器  ·  com.google.common.coll ...·  5 月前    · 
风度翩翩的排球  ·  shell ...·  1 年前    · 

0. 实验背景

需要导入多个.mat文件,将多组数据画在一个图中,并设置图例、坐标轴、散点图、折线图、子图等。

  • 由于存在重复操作,主要使用脚本文件编写代码。
  • figure窗口操作比较简单,脚本文件不好写的部分可用figure窗口操作进行辅助。
  • 1. 导入.mat文件存储

    1.1 导入.mat文件及作图最简单的方式:

    在matlab工作文件夹区域打开存有.mat文件的文件夹,双击.mat文件则导入该文件。
    之后使用如下命令可画图:

    >>plot(x,y);
    >>hold on;
    

    多种数据则重复此过程即可。

    1.2 导入.mat文件及作图的脚本代码

    代码如下,导入6个.mat文件并作图:

    %load
    m1=load('文件1.mat');
    m2=load('文件2.mat');
    m3=load('文件3.mat');
    m4=load('文件4.mat');
    m5=load('文件5.mat');
    m6=load('文件6.mat');
    %获取数据,这里可以这样写是因为我.mat文件中只存在两个属性x和y,不知道自己.mat文件中有哪些属性的话,可以点击工作区的m1~m6变量中的任何一个。
    x1=m1.x;
    y1=m1.y;
    x2=m2.x;
    y2=m2.y;
    x3=m3.x;
    y3=m3.y;
    x4=m4.x;
    y4=m4.y;
    x5=m5.x;
    y5=m5.y;
    x6=m6.x;
    y6=m6.y;
    %多组数据画图
    plot(x1,y1);
    hold on;%hold on使得一张图中可以显示多个不同的图像线条
    plot(x2,y2);
    hold on;
    plot(x3,y3);
    hold on;
    plot(x4,y4);
    hold on;
    plot(x5,y5);
    hold on;
    plot(x6,y6);
    hold on;
    

    查看.mat形成的结构体的属性的方式如下:

    2. plot画图总结

    2.1 画散点图

    画散点图可以使用scatter()函数,也可使用plot()函数,本文主要介绍使用plot()函数的方法。

    2.1.1 点形状

    matlab中常用的点形状如下所示:

    +                 '+'号
    o                 空心圆
    *                 '*'号
    .                 实心点,比空心圆小 
    x                 'x'号
    square or s   空心正方形
    diamond or d  空心菱形
    ^                 空心上三角,尖头朝上
    v                 空心下三角,尖头朝下
    >                 空心右三角,尖头朝右
    <                 空心左三角,尖头朝左
    pentagram or p  空心五角星
    hexagram or h   空心六边形
    

    plot函数实例:

    plot(x,y,'+');%绘制散点图,散点图形状为'+'。
    plot(x,y,'s');%绘制散点图,散点图形状为空心正方形,等同于plot(x,y,'square');
    

    2.1.2 点大小

    属性:'Markersize'
    

    plot函数实例:

    plot(x,y,'+','Markersize',4);%绘制散点图,点大小为4
    

    2.1.3 点颜色

    常用颜色:
    r   Red
    g   Green
    b   Blue
    c   Cyan
    m   Magenta
    y   Yellow
    k   Black
    w   White
    

    plot函数实例:

    %1.使用默认颜色
    plot(x,y,'+r','Markersize',4);%绘制散点图,点大小为4,颜色为红色
    %2.使用默认颜色的第二种方式:
    plot(x,y,'+','Markersize',4);%绘制散点图,点大小为4
                                 %颜色为多组线条的默认值,第一条为蓝色,第二条为橙色,...,详见2.3.1节
    %3.自定义颜色,RGB格式为[r g b],每个数值为0~1之间的小数值
    plot(x,y,'+','Color',[0 0.321 0],'Markersize',4)%绘制散点图,点大小为4
                                                    %颜色为自定义的颜色,取色方式见2.3.2小节
    

    注意,在用plot绘制散点图添加各种属性的时候,点形状应该摆在第一位,如果先设置'Color'或者'Markersize'等属性对,则会导致点形状无法和对应属性配对。

    (实际上是我不太知道plot函数里点形状的属性名称,所以这样写,如果能知道这个属性名称的话就无所谓了。)

    2.1.4 点填充

    属性:'MarkerFaceColor'
    

    plot函数实例:

    plot(x,y,'s','Color',[0 0.321 1],...  %...用来拆分长命令
        'Markersize',4,'MarkerFaceColor',[0 0.321 1]);%空心正方形内部填充和边框同样的颜色
    

    2.2 画折线图

    画折线图主要使用的是plot()函数。

    2.2.1 折线形状

    -      实线
    --     虚线
    :      点线(短虚线)
    -.     点段线(类似-·-·-)
    

    plot函数实例:

    % 1.常用方式
    plot(x,y,'--');%绘制折线图,线为虚线
    % 2.突出每个点的方式
    plot(x,y,'--s');%线为虚线,每个点为空心正方形,点的属性设置还是可以参考2.1的参数设置。
    

    2.2.2 折线粗细

    属性:'linewidth'
    

    plot函数实例:

    % 1.常用方式
    plot(x,y,'--s',...
        'linewidth',3);%设置线的粗细
    

    2.2.3 折线颜色

    和点的颜色设置类似。

    常用颜色:
    r   Red
    g   Green
    b   Blue
    c   Cyan
    m   Magenta
    y   Yellow
    k   Black
    w   White
    

    plot函数实例:

    %1.使用默认颜色
    plot(x,y,'--+r');
    %2.使用默认颜色的第二种方式:
    plot(x,y,'--+');%颜色为多组线条的默认值,第一条为蓝色,第二条为橙色,...,详见2.3.1节
    %3.自定义颜色,RGB格式为[r g b],每个数值为0~1之间的小数值
    plot(x,y,'--+','Color',[0 0.321 1])%颜色为自定义的颜色,取色方式见2.3.2小节
    

    注意,在用plot绘制折线图添加各种属性的时候,如果只有线形状设置,可用属性对'linestyle','--'摆在任何位置,如果还有点形状的设置,则应该摆在x,y之后的第一位,否则会导致点形状无法和对应属性配对。

    2.3 多条线条颜色组合

    matlab中作图有的时候会有多组数据分别作图,呈现在一张图中,此时颜色的搭配就能够体现出图像的美观。

    2.3.1 matlab默认配色

    matlab默认配色如下所示:
    对应的rgb数值为:

    [[0    0.4470    0.7410]
    [0.8500    0.3250    0.0980]
    [0.9290    0.6940    0.1250]
    [0.4940    0.1840    0.5560]
    [0.4660    0.6740    0.1880]
    [0.3010    0.7450    0.9330]
    [0.6350    0.0780    0.1840]]
    

    plot函数实例:

    plot(x,y,'--+');%该线条为第几条,就对应哪种颜色
    

    2.3.2 自定义RGB

    用户可使用[value1 value2 value3]的三元组方式设置任意颜色。

    matlab中RGB数值需要01之间,而一般的颜色RGB数值为0255之间。两种格式的转变也很简单:

    常见格式:
    [134 255 0]
    转为matlab可用格式:
    [134/255 255/255 0/255]=[0.5255 1 0]
    而从matlab可用格式转为常见格式则*255即可。
    

    下面主要介绍一下常用的取色方式:

    将截图用PS打开,之后按照下图操作:
    2. PPT取色

    将截图插入ppt中,之后按照下图操作

    plot函数实例:

    plot(x,y,'--+','Color',[0 0.321 1])%颜色为自定义的颜色
    

    2.4 显示网格

    //显示网格线
    grid on;%默认颜色为灰色
    //隐藏网格线(默认)
    grid off;
    

    2.5 显示图例

    2.5.1 脚本代码写法

    % 一般写法
    legend('图1的标注,支持latex格式','图2的标注,支持latex格式',……,'图n的标注,支持latex格式');
    

    legend也有很多参数可供调整,例如如下代码:

    lgd=legend('图1的标注,支持latex格式','图2的标注,支持latex格式',……,'图n的标注,支持latex格式',...
        'Location','NorthOutside', ... %图例的位置
        % 'Position',[左下点x相对坐标 左下点y相对坐标 图例相对宽度 图例相对高度]; %图例位置的另一种写法,可通过数值修改自由移动图例位置,Position和Location二者选择其一。
        'Orientation','horizontal',... % 水平显示还是垂直显示
        'FontName','Times New Roman','FontSize',23, 'FontWeight','bold');% 图例字体
    

    2.5.2 figure窗口操作(推荐)

  • 使用plot()函数在脚本或者命令行生成figure图像;
  • 点击如下所示的按钮显示图例:
  • 图例属性设置
  • 点击如下按钮,为后面选中图例对象做准备:

    选择图例对象,右键,选择“打开属性检查器”

    可在属性检查器中编辑修改图例边框、图例位置等信息

    点击图例之后,如果四周出现正方形标识,可直接拖动legend对象改变位置,或者选择四个角的任意一个改变图例大小。

    附上legend属性和取值的参考

    2.6 设置坐标轴

    2.6.1 坐标轴名称

    %设置x坐标轴
    xlabel('x坐标轴名称,支持latex格式');
    %设置y坐标轴
    ylabel('y坐标轴名称,支持latex格式');
    

    2.6.2 坐标轴名称的文字格式(字体、大小、加粗)

    xlabel('x坐标轴名称,支持latex格式',...
        'FontName','Times New Roman','FontSize',23,'FontWeight','bold');
        %分别设置字体风格、字体大小,字体效果(加粗)
    ylabel('y坐标轴名称,支持latex格式',...
        'FontName','Times New Roman','FontSize',23,'FontWeight','bold');
    

    2.6.3 坐标轴框线和刻度数字

    %设置刻度数字
    set(gca,'FontName','Times New Roman','Fontsize',23,'FontWeight','bold');
            %设置字体风格、字体大小、字体效果(加粗)
    %坐标轴框线加粗
    set(gca,'linewidth',1.5);%1.5位置可自由设置合理的数值
    

    2.7 画子图(局部放大图)

    2.7.1 子图的脚本代码写法

    有的时候需要显示局部数据,因此需要在大图中嵌入子图。

    %显示子图
    axes('position',[0.15,0.55,0.2,0.23]);%设置子图的出现位置
    plot(x,y,'s','Color',[0.9216,0.7098,0.1294],...
        'Markersize',4,'MarkerFaceColor',[0.9216,0.7098,0.1294]);%设置子图的数据、图形状、颜色等属性
    hold on;
    

    我们通常会在论文图中,看到子图和大图局部之间存在虚线框和箭头,提示读者子图放大的是哪一部分的图像。脚本代码如下:

    %子图提示图形--虚线框
    xi=[214 214 216 216];%设置左下、左上、右上、右下(顺时针方向)的x绝对坐标
    yi=[0 3.3 3.3 0];%设置左下、左上、右上、右下(顺时针方向)的y绝对坐标
    plot(xi,yi,'b','LineWidth',2,'LineStyle','--');%画出虚线框,颜色为蓝色,线宽度为2,线形状为虚线
    %子图提示图形--箭头
    annotation('arrow',...%设置箭头类型为‘单箭头’,此外还有双箭头等
        [0.5,0.37],[0.5,0.7],... %设置箭头起始位置和终止位置,[x1 x2],[y1 y2]表示从起点(x1,y1)到终点(x2,y2),使用的是相对坐标。
        'color',[0 0 1],'LineWidth',2);%箭头颜色为蓝色,线条宽度为2
    

    2.7.2 子图的figure窗口操作(推荐)

    选择图像整体

    ctrl+c复制整体,ctrl+v粘贴整体,对于新出现的图像对象调整位置和大小。