2010-10-24 5 views

Antwort

17

Betrachten Sie den Code:

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 

Das von diesem newsgroup discussion

+1

erstaunlich, wirklich sehr gut. Vielen Dank, das spart viel Schmerz. – Vass

+0

und der Link zur Newsgroup-Diskussion ist nützlich – Vass

1

Verwenden Sie saveas. Speichern Sie Ihr Subplot als FIG-Datei, damit Sie später die vollständige Kontrolle darüber haben (im Gegensatz zu einem JPG).

Wählen Sie ein Kachelmuster und verwenden Sie dann subplot, um mehrere Zahlen in einem anzuzeigen.

+0

Wie laden Sie sie dann in einer einzigen Figur? – Vass

+0

@Vass: Ich habe meine Antwort aktualisiert – Jacob

1

Ich habe eine Antwort hier als Beispiel:

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 Werke stark angepasst wurde, aber mit Boxplots Sie haben um die Xtick- und Xtick-Labels zurückzusetzen, ansonsten werden sie aus irgendeinem Grund nicht entsprechend dem Subplot angepasst. Wenn Sie die boxplot erstellen oder nachdem Sie die Zahl Add Eröffnung:

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

oder automatische Zecken setzen und Etiketten

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

interessant, danke für die Freigabe. Haben Sie versucht, statt Achsen zu kopieren (die kommentierte Zeile in meinem Code)? Um ehrlich zu sein, meine Lösung ist nicht ohne Fehler; zum Beispiel würde es scheitern, wenn die Figuren unterschiedliche Colormaps hätten (es sei denn, du nimmst den [extra Aufwand] (http://www.mathworks.com/support/solutions/en/data/1-GNRWEH/index.html) um zu arbeiten Das) – Amro

Verwandte Themen