1 使用背景
fig文件作为Matlab中的图形文件,其实原始数据是会存储在figure对象中的,其不仅仅只是一张图片;
论文写作时,直接将plot运行的结果进行截图粘贴时,图片的分辨率不够导致曲线及图片上的文字模糊;
plot运行得到的坐标轴等文字标注的字体、大小等不符合论文规范,影响论文的美观。
2 fig文件的保存
对于matlab得到的plot结果,点击图窗的“保存”按钮,选定.fig类型进行保存。
![](https://i-blog.csdnimg.cn/blog_migrate/57b07bfd4b1b8fcfa7730afc236d529c.png)
3 fig文件的使用(编辑)
在刚刚保存的路径下找到该.fig文件,双击打开
![](https://i-blog.csdnimg.cn/blog_migrate/090fc0829438faf42b67f3ce6f6a7d90.png)
可对坐标区进行编辑:找到菜单栏的“编辑”--“坐标区属性”,在窗口右侧将会打开“属性检查器”
![](https://i-blog.csdnimg.cn/blog_migrate/59999696ed35ed37d3bd7185da4d1aab.png)
![](https://i-blog.csdnimg.cn/blog_migrate/af3c74be8f6aa441a2a6ce01662f405a.png)
修改坐标轴及标注的文字字体:
![](https://i-blog.csdnimg.cn/blog_migrate/68124052e9583a0c69a8c638ca3f2a24.png)
同样地,“刻度”可修改坐标轴刻度的精度;“标尺”可修改坐标轴显示的范围大小、坐标轴颜色、线性坐标or log坐标等等属性;”网格“可为坐标区显示网格、设置网格颜色及细分度.....(各类属性可供使用者根据需要进行修改)。
即:对于可能由于原程序已经修改而无法运行或程序复杂度过高而运行时间过久等,可以在不允许matlab源程序的情况下,针对论文等场合需要,对图像的展现属性进行修改。
iii. 可以在窗口内直接选中曲线或点,右击鼠标后,对曲线(或点)的属性进行编辑:
![](https://i-blog.csdnimg.cn/blog_migrate/5948d666081eb5520d54de388076d16e.png)
如:将曲线的颜色改为黄色:
![](https://i-blog.csdnimg.cn/blog_migrate/0f80ae2961568e6c3b5d930cc9bdb0e9.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7bf5d1d7ca00280d66b0791c52d5d48a.png)
iv. 将编辑完成后的图像复制在word文件中
选择菜单栏中的”编辑“--》”复制图窗“
![](https://i-blog.csdnimg.cn/blog_migrate/014a7b5400147cedc65633ebbba251f1.png)
粘贴后得到的效果 与 直接对plot结果截图 的对比如下:
![](https://i-blog.csdnimg.cn/blog_migrate/9132896ce5da88018abbd1d10e920006.png)
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');
本文参考链接(包括更为详细的数据提取方法):