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即可。

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

  1. PS取色

将截图用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窗口操作(推荐)

  1. 显示图例
  • 使用plot()函数在脚本或者命令行生成figure图像;
  • 点击如下所示的按钮显示图例:

  1. 图例属性设置
  • 点击如下按钮,为后面选中图例对象做准备:

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

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

  • 点击图例之后,如果四周出现正方形标识,可直接拖动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粘贴整体,对于新出现的图像对象调整位置和大小。

  • 对于子图中不需要的实例,我们可以选中,右键选择“删除”

  • 此时,子图的横纵坐标范围依然和主图保持一致。

  • 选择子图对象,右键,选择“打开属性检查器”。设置x轴的坐标范围和数值取值

  • 属性检查器里面还可以设置很多其他东西,具体和设置图像的操作差不多,大家可以自己探索哦!

  • 辅助提示的虚线框和箭头,也可以用figure窗口来画。

  • 在figure上方工具栏选择"插入",选择“矩形”或者“箭头”,在图像想作图的为止,鼠标操作拉出图像。

  • 右键,选择“打开属性检查器”,可修改颜色、线型、线宽等参数。



    修改对应参数之后,虚线框成功画出,且可自由调节位置和大小。

  • 箭头的作图和矩形类似,在工具栏选择“插入”,选择“箭头”,拉出箭头线条,右键选择“打开属性检查器”,改变颜色、线形、线宽等。

3. 常见资料参考

1.mathworks.cn

2.知乎大佬

Matlab导入多个.mat文件进行画图的更多相关文章

  1. Matlab与外部接口:MAT文件基础

    MAT 文件MAT文件是MATLAB使用的一种特有的二进制数据文件.MAT文件可以包含一个或者多个MATLAB 变量.MATLAB通常采用MAT文件把工作空间的变量存储在磁盘里,在MAT文件中不仅保存 ...

  2. matlab与C++以.mat文件方式进行数据相互流动

    年前,放假回家之前,使用了C++与matlab之间的数据的互动的一个实验,感觉效果挺好.初步达到了目的,所以整理下来方便大家使用.减少大家编程学习的时间.希望对你们有用. #include " ...

  3. MATLAB导入txt和excel文件技巧汇总:批量导入、单个导入

    在使用MATLAB的时候,想必各位一定会遇到导入数据的问题.如果需要导入的数据其数据量巨大的话,那么在MATLAB编辑器中将这些数据复制粘贴进来,显然会在编辑器中占据巨大的篇幅,这是不明智的. 一般来 ...

  4. Visual Studio 控制台应用程序 同时使用OpenCV和matlab mat文件操作

    matalb具有灵活的图像处理,代码编写起来简洁而高效.而OpenCV具有很多成熟的计算机视觉算法,能够处理很多实时的识别处理等问题,而且代码运行起来效率很高.所以如何结合两者之间的优点,是让很多学术 ...

  5. MAT文件操作

    o李YZo 原文 MAT文件打开方法汇总及其他操作 MAT文件简介 为MATLAB使用的一种特有的二进制数据文件.MAT文件可以包含一个或者多个MATLAB 变量.MATLAB通常采用MAT文件把工作 ...

  6. python读取并写入mat文件

    用matlab生成一个示例mat文件: clear;clc matrix1 = magic(5); matrix2 = magic(6); save matData.mat 用python3读取并写入 ...

  7. mat文件读写

    一起来学演化计算-mat文件读写 觉得有用的话,欢迎一起讨论相互学习~Follow Me Matlab读取和保存mat文件数据 在matlab命令行中输入save 变量名a,将a变量保存在新生成的a. ...

  8. MATLAB中批量导入.mat文件(每个文件多变量)

    一.新建MATLAB script(.m文件):readall_mat.m 二.代码如下: function data = readall_mat(path) % READALL_MAT 读取所有文件 ...

  9. matlab mat文件读取和调用

    13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存.导入和文件打开.13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时 ...

  10. matlab结构体形式保存数据生成.mat文件< 转>

    2015年 参加天池大数据竞赛     为了建立模型,打算基于matlab使用Random Forest Algorithm的工具包 该工具包我在此分享给大家,http://yunpan.cn/cVX ...

随机推荐

  1. C#自定义控件开发(2)—LED指示灯

    下面来开发一个LED指示灯控件,如下: 设计属性包括: 外环宽度,外环间隙,内环间隙,颜色[五种],当前值. 由于该LED指示灯基本是完全独立设计的,并不是在某个控件的基础上进行的开发,因此,这里使 ...

  2. golang基础语法学习

    1.函数作为一等公民 2.驼峰命名法/大小写决定是否在包外见 3.包名应该是小写的单个单词命名 4. 包名应为其源码的基础名称,如encoding/base64,包名应为base64而不是encodi ...

  3. Dubbo-聊聊Dubbo协议

    前言 Dubbo源码阅读分享系列文章,欢迎大家关注点赞 SPI实现部分 Dubbo-SPI机制 Dubbo-Adaptive实现原理 Dubbo-Activate实现原理 Dubbo SPI-Wrap ...

  4. 总结uni-app遇到的坑持续跟新

    1.uni.navigateTo跳转没有反应 官方示例 //在起始页面跳转到test.vue页面并传递参数 uni.navigateTo({ url: 'test?id=1&name=unia ...

  5. 第1章-Spring的模块与应用场景

    目录 一.Spring模块 1. 核心模块 2. AOP模块 3. 消息模块 4. 数据访问模块 5. Web模块 6. 测试模块 二.集成功能 1. 目标原则 2. 支持组件 三.应用场景 1. 典 ...

  6. 斐波那契散列算法和hashMap实践

    斐波那契散列和hashMap实践 适合的场景:抽奖(游戏.轮盘.活动促销等等) 如果有不对的地方,欢迎指正! HashMap实现数据散列: 配置项目,引入pom.xml: <dependency ...

  7. UEFI引导linux启动过程的顺序,及修改办法

    注意这里我说的是 uefi 启动 启动过程顺序 正常安装完一个Linux系统,硬盘会被分成俩个分区,一块是 fat32 文件系统(启动项存放位置),一块是ext4 文件系统(也就是系统真正的安装位置) ...

  8. 多线程/GIL全局锁

    目录 线程理论 创建线程的两种方式 线程的诸多特性 GIL全局解释器 验证GIL存在 同一个进程下多线程是否有优势 死锁现象 信号量 Event事件 线程理论 进程 进程其实是资源单位 标示开辟一块内 ...

  9. 论文翻译:2022_DNS_1th:Multi-scale temporal frequency convolutional network with axial attention for speech enhancement

    论文地址:带轴向注意的多尺度时域频率卷积网络语音增强 论文代码:https://github.com/echocatzh/MTFAA-Net 引用:Zhang G, Yu L, Wang C, et ...

  10. Surp Suite入门

    BurpSuite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请求数据.服务器端的返回信息等.Burp Suite主要拦截HTTP和HTTPS 协议的流量,通过拦截,Burp S ...