2010-10-24 16 views

Respuesta

17

Considere el código:

hFig = figure; 

%# create temporary subplots as template 
for i=1:2, h(i) = subplot(2,1,i); end  %# create subplots 
pos = get(h, 'Position');     %# record their positions 
delete(h)         %# delete them 

%# load the .fig files inside the new figure 
fileNames = {'a.fig' 'b.fig'};    %# saved *.fig file names 
for i=1:2 
    %# load fig 
    hFigFile = hgload(fileNames{i}); 

    %# move/copy axis from old fig to new fig 
    hAx = get(hFigFile, 'Child');   %# hAx = gca; 
    set(hAx, 'Parent',hFig) 
    %#hAx = copyobj(hAx,hFig); 

    %# resize it to match subplot position 
    set(hAx, 'Position',pos{i}); 

    %# delete old fig 
    delete(hFigFile) 
end 

Esta es una adaptación de esta newsgroup discussion

+1

increíble, realmente muy bueno. Muchas gracias, esto ahorra mucho dolor. – Vass

+0

y el enlace a la discusión del grupo de noticias es útil – Vass

1

Use saveas. Guarde su subtrama como un archivo FIG para que tenga control completo sobre él más tarde (en lugar de un JPG).

Elija un patrón de mosaico y luego use subplot para visualizar varias figuras en una.

+0

¿Cómo se carga a continuación en una sola cifra? – Vass

+0

@Vass: He actualizado mi respuesta – Jacob

1

tengo una respuesta aquí como un ejemplo:

h1 = figure(1) 
plot(1:10,'o-r'); 
title('title'); 
xlabel('xlabel'); 
ylabel('ylabel'); 

% Copy contents 
ch(1) = copyobj(gca,gcf); 

% Figure 2 
h2 = figure(2) 
plot(1:30,'o-r'); 
title('title fig2'); 
xlabel('xlabel'); 
ylabel('ylabel'); 
% copy contents 
ch(2) = copyobj(gca,gcf); 

figure(3) 
sh = subplot(1,2,1); 
clear axes 
p = get(sh,'position'); 
ah = copyobj(ch(1),gcf); 
set(ah,'position',p); 

% Create axis template 
sh = subplot(1,2,2); 
clear axes 
p = get(sh,'position'); 
ah = copyobj(ch(2),gcf); 
set(ah,'position',p); 

% Delete template 
% delete(sh); 
1

Amro's solution obras en gran medida, pero con gráficos de caja que tiene para restablecer las etiquetas Xtick y Xtick; de lo contrario, por alguna razón, no se redimensionarán según la subtrama. Al crear el diagrama de caja o después de la apertura de la figura complemento:

set(gca,'XTick',<1d vector>,'XTickLabel',<1d cell vector>) 

o poner garrapatas automáticas y etiquetas

set(gca,'XTickMode','auto','XTickLabelMode','auto') 
+0

interesante, gracias por compartir. ¿Intentó copiar en lugar de mover ejes (la línea comentada en mi código) ?. Para ser sincero, mi solución no está exenta de defectos; por ejemplo, fallaría si las figuras tuvieran diferentes mapas de color (a menos que tome el [esfuerzo extra] (http://www.mathworks.com/support/solutions/en/data/1-GNRWEH/index.html) para evitar ese) – Amro

Cuestiones relacionadas