How can I extract Information from .FIG Files?

1 view (last 30 days)
I have 200+ .FIG files with X & Y Data. I'm trying to do something like:
X = 1:1000;
Y1 = get(Xdata, 'Figname.fig');
Y2 = ...;
etc...
plot(X, Y1, X, Y2, etc...)

Answers (1)

Walter Roberson
Walter Roberson on 19 May 2020
projectdir = 'appropriate/directory';
dinfo = dir( fullfile(projectdir, '*.fig'));
nfiles = length(dinfo);
filenames = fullfile({dinfo.folder}, {dinfo.name});
plotfig = figure();
plotax = axes('Parent', plotfig);
for K = 1 : nfiles
thisfile = filenames{K};
[~, basename, ~} = fileparts(thisfile);
fig = openfig(thisfile, 'new', 'invisible');
hasx = findobj(fig, '-property', 'XData');
xd = get(hasx, 'XData');
yd = get(hasx, 'YData');
delete(fig)
if iscell(xd)
temp = [xd(:), yd(:)].';
plot(plotax, temp{:}, 'DisplayName', basename);
else
plot(plotax, xd, yd, 'DisplayName', basename);
end
hold(plotax, 'on');
drawnow;
end
legend(plotax, 'show')
I do not assume that there is only one object with XData per figure.
I do assume that the object to be extracted from has a visible handle. This was a deliberate design decision; you could switch to findall() instead of findobj() if it is not true. One of the reasons I made the choice is that in some cases lines from legend can appear as objects that have XData property.

Categories

Find more on Specifying Target for Graphics Output in Help Center and File Exchange

Products


Release

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!