Please help! Combine figures into one new figure

2 visualizaciones (últimos 30 días)
Deniz Baturay
Deniz Baturay el 24 de Mzo. de 2016
Editada: Deniz Baturay el 27 de Mzo. de 2016
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.
  2 comentarios
KSSV
KSSV el 24 de Mzo. de 2016
Editada: KSSV el 24 de Mzo. de 2016
what format the figures are in? If .fig (Matlab fig) attempt is easy.
Deniz Baturay
Deniz Baturay el 24 de Mzo. de 2016
They are in .fig format but as you see graphs have bolded xlabel, ylabel and legends.

Iniciar sesión para comentar.

Respuestas (3)

Azzi Abdelmalek
Azzi Abdelmalek el 24 de Mzo. de 2016
Editada: Azzi Abdelmalek el 25 de Mzo. de 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 comentarios
Deniz Baturay
Deniz Baturay el 25 de Mzo. de 2016
It gives error.Attempted to access gg(2); index out of bounds because numel(gg)=0.
Deniz Baturay
Deniz Baturay el 25 de Mzo. de 2016
I changed 'type' as 'tag' for legend line. In one figure, legends seems into figure, but other things go wrong. In other figure, left sides graphs doesn't seem. Only legends seem :(

Iniciar sesión para comentar.


Jos (10584)
Jos (10584) el 24 de Mzo. de 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 comentario
Deniz Baturay
Deniz Baturay el 24 de Mzo. de 2016
Thanks for the answer, but I have legends in the figures.

Iniciar sesión para comentar.


KSSV
KSSV el 24 de Mzo. de 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 comentarios
Deniz Baturay
Deniz Baturay el 26 de Mzo. de 2016
Dr. Siva Srinivas Kolukula Graphs have legends, xlabel and y label. I think your code didn't work because of this.
Deniz Baturay
Deniz Baturay el 26 de Mzo. de 2016
I checked your code with your figure. This is not my question.

Iniciar sesión para comentar.

Categorías

Más información sobre Specifying Target for Graphics Output en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by