Matlab绘图保存为.fig格式以使用,及.fig文件的加载与数据读取

文章介绍了如何使用Matlab保存fig文件,并通过编辑fig文件来修改坐标轴属性,如字体、刻度精度和颜色。此外,还详细阐述了如何在不运行源程序的情况下,直接编辑fig文件中的图像属性,以及如何从fig文件中提取数据,包括二维和三维曲线的数据。提供了数据提取的步骤和相关命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文章已经生成可运行项目,

1 使用背景

  • fig文件作为Matlab中的图形文件,其实原始数据是会存储在figure对象中的,其不仅仅只是一张图片;

  • 论文写作时,直接将plot运行的结果进行截图粘贴时,图片的分辨率不够导致曲线及图片上的文字模糊;

  • plot运行得到的坐标轴等文字标注的字体、大小等不符合论文规范,影响论文的美观。

2 fig文件的保存

对于matlab得到的plot结果,点击图窗的“保存”按钮,选定.fig类型进行保存。

3 fig文件的使用(编辑)

  1. 在刚刚保存的路径下找到该.fig文件,双击打开

  1. 可对坐标区进行编辑:找到菜单栏的“编辑”--“坐标区属性”,在窗口右侧将会打开“属性检查器”

修改坐标轴及标注的文字字体:

同样地,“刻度”可修改坐标轴刻度的精度;“标尺”可修改坐标轴显示的范围大小、坐标轴颜色、线性坐标or log坐标等等属性;”网格“可为坐标区显示网格、设置网格颜色及细分度.....(各类属性可供使用者根据需要进行修改)。

即:对于可能由于原程序已经修改而无法运行或程序复杂度过高而运行时间过久等,可以在不允许matlab源程序的情况下,针对论文等场合需要,对图像的展现属性进行修改

iii. 可以在窗口内直接选中曲线或点,右击鼠标后,对曲线(或点)的属性进行编辑:

如:将曲线的颜色改为黄色:

iv. 将编辑完成后的图像复制在word文件中

选择菜单栏中的”编辑“--》”复制图窗“

粘贴后得到的效果 与 直接对plot结果截图 的对比如下:

4 fig文件的加载及数据获取

在Matlab命令行窗口使用open指令打开fig文件:

Tips:如果你想使用open命令打开的话,你需要文件的绝对路径,或者把文件复制到当前文件夹

1)若fig文件中的图像每个像素都有数据

在命令行窗口输入:

open('XXX.fig');            %注意对应自己的fig文件名

h=get(gca,'Children');

data=get(h,'Cdata');

2)若fig文件中图像是由单条曲线绘制而成(如上例 1.fig )

open('1.fig');

h_line=get(gca,'Children');    % 获取坐标轴的子对象:Line对象
h_axes = get(gcf,'Children');  % 获取当前的图形的子对象:Axes坐标轴对象

%获取line对象的xdata、ydata属性
xdata=get(h_line,'Xdata');
ydata=get(h_line,'Ydata');

代码解释:

所绘制曲线的原始数据保存在Line对象中,而Line对象是坐标轴Axes的子对象,Axes是figure的子对象。

获取fig文件原始数据的思路是:先找出figure对象的所有Axes子对象,再找出每个坐标轴的所有Line子对象,最后获取每条Line的XData、YData、ZData属性,得到原始数据。

3)若fig文件中图像是由三维单条曲线绘制而成

open('XXX.fig');

h_line=get(gca,'Children');    % 获取坐标轴的子对象:Line对象

%获取每条Line的XData、YData、ZData属性
xdata=get(h_line,'Xdata');
ydata=get(h_line,'Ydata');
zdata=get(h_line,'Zdata');

本文参考链接(包括更为详细的数据提取方法):

Matlab如何提取fig文件中的数据

matlab的fig文件怎么打开?(图文教程)

本文章已经生成可运行项目
### 如何在 MATLAB读取 .fig 文件中的 3D 点云数据 为了从 `.fig` 文件中提取三维点云数据,在 MATLAB 中可以利用 `open` 函数打开保存的图形窗口对象,再从中获取绘图数据源。具体操作如下: #### 打开 FIG 文件并访问其句柄 ```matlab % 加载.fig文件到当前工作区 fh = open('example.fig'); ``` 一旦打开了 `.fig` 文件,则可以通过遍历该图形对象下的子对象来定位存储有实际绘制数据的部分。 #### 提取坐标轴内的点云数据 对于包含 3D 散点图或其他形式表示点云的对象来说,通常会存在于特定类型的 axes 子对象内。因此,下一步就是找到这些目标对象,并收集它们的位置信息作为最终所需的点集[^1]。 ```matlab % 获取所有的axes对象 axObjs = findobj(fh, 'Type', 'axes'); for i = 1:length(axObjs) % 假设我们只关心第一个符合条件的axes ax = axObjs(i); % 查找所有scatter或line类别的children(即代表单个散点) children = get(ax,'Children'); for j=1:numel(children) childObj = children(j); if strcmp(get(childObj,'Type'),'scatter') || ... (strcmp(get(childObj,'Type'),'line') && ~isempty(get(childObj,'XData'))) X = get(childObj,'XData'); Y = get(childObj,'YData'); Z = get(childObj,'ZData'); % 将XYZ组合成矩阵形式以便后续处理 pointCloud(:,:,i) = cat(2,X(:),Y(:),Z(:)); end end end close(fh); % 关闭figure防止内存泄漏 ``` 上述代码片段展示了如何解析由不同方式创建出来的 3D 图形元素,并将其中心位置整理为易于使用的结构化数组。需要注意的是,这里假设了每种类型都具有标准定义好的属性名称;如果遇到特殊情况可能还需要额外调整逻辑以适应具体的场景需求[^2]。 通过这种方式可以从已有的 `.fig` 文件里恢复出原始用于渲染图像的空间几何关系,进而实现对点云数据的有效提取进一步加工。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锅小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值