Please help! Combine figures into one new figure

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 Kommentare

KSSV
KSSV am 24 Mär. 2016
Bearbeitet: KSSV am 24 Mär. 2016
what format the figures are in? If .fig (Matlab fig) attempt is easy.
They are in .fig format but as you see graphs have bolded xlabel, ylabel and legends.

Melden Sie sich an, um zu kommentieren.

Antworten (3)

Azzi Abdelmalek
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
Deniz Baturay am 24 Mär. 2016
Bearbeitet: Deniz Baturay am 25 Mär. 2016
@Azzi Abdelmalek Thanks for the answer, but legends are opened in a new figure, they don't seem on the graphs and ylabel don't seem in the figure. Also numbers on the x and y axes are not exactly the same as my figure.
Look at edited answer
It gives error.Attempted to access gg(2); index out of bounds because numel(gg)=0.
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 :(

Melden Sie sich an, um zu kommentieren.

Jos (10584)
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

Thanks for the answer, but I have legends in the figures.

Melden Sie sich an, um zu kommentieren.

KSSV
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

Thanks for the answer but gives error. Invalid property found. Object Name: text Property Name: 'XData'.
KSSV
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?
Dr. Siva Srinivas Kolukula Graphs have legends, xlabel and y label. I think your code didn't work because of this.
I checked your code with your figure. This is not my question.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Graphics Object Properties finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 24 Mär. 2016

Bearbeitet:

am 27 Mär. 2016

Community Treasure Hunt

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

Start Hunting!

Translated by