Please help! Combine figures into one new figure
Ältere Kommentare anzeigen
I obtained many figures like the figure.

In every figure, I have two graphs. I want to take left graphs from every figure and combine them into one new figure. Also, I want to take right graphs from every figure and combine them into one new figure. Graphs have legends, xlabel and ylabel.
Antworten (3)
Azzi Abdelmalek
am 24 Mär. 2016
Bearbeitet: Azzi Abdelmalek
am 25 Mär. 2016
Edit
%---------------------Generate an example---------------------------------
t=0.1:0.1:10;
y=rand(numel(t),6);
for k=1:2:5
figure
subplot(1,2,1)
plot(t,y(:,k))
legend(sprintf('leg%d',k))
title(gca,sprintf('title%d',k))
xlabel(gca,sprintf('x%d',k))
ylabel(gca,sprintf('y%d',k))
subplot(1,2,2)
plot(t,y(:,k+1))
legend(sprintf('leg%d',k+1))
title(gca,sprintf('title%d',k+1))
xlabel(gca,sprintf('x%d',k+1))
ylabel(gca,sprintf('y%d',k+1))
end
%------------------------The code---------------------------------
fig=findobj('type','figure')
n=numel(fig);
for m=2:-1:1
figure
for k=n:-1:1
fig1=fig(k);
ii=get(fig1,'children')
aa=findobj(ii,'type','axes')
gg=findobj(ii,'type','legend')
o=aa(m)
p=gg(m)
x=get(get(o,'Xlabel'),'String')
y=get(get(o,'Ylabel'),'String')
titre=get(get(o,'title'),'String')
legende=get(p,'String')
subplot(n,1,k)
copy(allchild(o),gca)
xlabel(x)
ylabel(y)
title(titre)
legend(legende)
end
end
4 Kommentare
Deniz Baturay
am 24 Mär. 2016
Bearbeitet: Deniz Baturay
am 25 Mär. 2016
Azzi Abdelmalek
am 25 Mär. 2016
Look at edited answer
Deniz Baturay
am 25 Mär. 2016
Deniz Baturay
am 25 Mär. 2016
Jos (10584)
am 24 Mär. 2016
Take a look at copyobj
figure(1)
subplot(1,2,1) ; ph{1} = plot(cumsum(rand(10,20)),'bo') ;
figure(2)
ax = subplot(3,4,3) ; copyobj(ph{1}, ax)
1 Kommentar
Deniz Baturay
am 24 Mär. 2016
KSSV
am 24 Mär. 2016
Try the following code with attached .fig file:
clc; clear all
% Extract data from figure
open('Junk.fig') ;
h = gcf; %current figure handle
axesObjs = get(h, 'Children'); %axes handles
dataObjs = get(axesObjs, 'Children'); %handles to low-level graphics objects in axes
for i = 1:length(axesObjs)
xdata{i} = get(dataObjs{i}, 'XData'); %data from low-level grahics objects
ydata{i} = get(dataObjs{i}, 'YData');
end
clf ;
plot(xdata{2},ydata{2},'r') ;
hold on
plot(xdata{1},ydata{1},'b') ;
You need to run a loop for each .fig.
4 Kommentare
Deniz Baturay
am 24 Mär. 2016
KSSV
am 26 Mär. 2016
when it gave a error? When you tried with the attached fig or with your figures? What version you are on?
Deniz Baturay
am 26 Mär. 2016
Deniz Baturay
am 26 Mär. 2016
Kategorien
Mehr zu Graphics Object Properties finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!