Matlab读取fig格式图片的数据,重新画图

首先声明我的图片来源,我的图片是使用matlab的分类工具箱,产生的ROC图

Matlab读取fig格式图片的数据,重新画图_第1张图片

 为了是效果展示更好所以寻求将多个不同模型的ROC放到同一个图片里,所以需要读取出fig中的数据再重新画图。

首先使用openfig打开fig格式的

Matlab读取fig格式图片的数据,重新画图_第2张图片

 运行open代码会打开图窗,在使用get函数,获取图像中的各个变量,而line中即为需要的变量

再通过obj(4)和obj(6)可以直接索引出数据的位置,需要先辨认出那个为自己的需要的数据,一般为最后一个,可以直接获取长度,然后访问最后一个。

每次读取一个文件都要再open一次,以下为总代码,每次的数据需要分别保存,在读取完全部图片后,一定要close(all)关闭所有窗口,否则会无法画出图片

openfig('Figure1.fig');   % 读取图片1
obj=get(gca,'Children');  % 固定读取方法,我不知道原理,也无需深究,读取全部
                          % 然后选中最后一个变量即为x,y值
len_obj=length(obj);      % 获取长度,方便访问最后一个变量
xdata=get(obj(len_obj),'Xdata');   %分别获取x,y
ydata=get(obj(len_obj),'Ydata');
openfig('Figure2.fig')    %  Figure2与Figure1同理
obj2=get(gca,'children');
len_obj2=length(obj2);
xdata2=get(obj2(len_obj2),'xdata');
ydata2=get(obj2(len_obj2),'ydata');
open('Figure3.fig');
obj3=get(gca,'children');
len_obj3=length(obj3);
xdata3=get(obj3(len_obj3),'xdata');
ydata3=get(obj3(len_obj3),'ydata');
close("all")             % 关闭全部窗口非常重要

% 接下来只需要正常画图即可 
width=1;
plot(xdata3,ydata3,'LineWidth',width)
hold on
plot(xdata2,ydata2,'LineWidth',width)
hold on
plot(xdata,ydata,'LineWidth',width)

你可能感兴趣的:(matlab数模,matlab,开发语言,机器学习)