Producendo sottotrame e poi combinale in una figura successiva in MATLAB

Il mio programma produce piccole figure durante il ciclo di comando. C’è un modo per salvare queste cifre e poi unirle in una figura dopo?

Considera il codice:

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 

Questo è stato adattato da questa discussione sui newsgroup

Usa saveas . Salva il tuo sottotramma come un file FIG in modo da avere il controllo completo su di esso più tardi (al contrario di un JPG).

Scegli uno schema di affiancamento e quindi usa subplot per visualizzare più figure in una.

Ho una risposta qui come esempio:

 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); 

La soluzione di Amro funziona molto, ma con i boxplot è necessario ripristinare le etichette Xtick e Xtick, altrimenti, per qualche ragione, non verranno ridimensionate secondo la sottotrama. Quando crei il boxplot o dopo aver aperto la figura aggiungi:

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

o mettere tick ed etichette automatici

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