Создание сюжетов, а затем объединить их в фигуру позже в MATLAB - PullRequest
10 голосов
/ 24 октября 2010

Моя программа выдает маленькие цифры во время командного цикла. Есть ли способ просто сохранить эти цифры и затем объединить их в одну фигуру позже?

Ответы [ 4 ]

17 голосов
/ 24 октября 2010

Рассмотрим код:

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

Это было адаптировано из этого обсуждения в группе новостей

1 голос
/ 06 мая 2013

Решение Amro работает очень хорошо, но при работе с коробочными диаграммами вам необходимо сбросить метки Xtick и Xtick, в противном случае по какой-то причине они не будут изменены в соответствии с вложенным сюжетом.Когда вы создаете блокпост или открыв фигуру, добавьте:

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

или поставьте автоматические галочки и метки

set(gca,'XTickMode','auto','XTickLabelMode','auto')
1 голос
/ 24 октября 2010

У меня есть ответ в качестве примера:

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 голос
/ 24 октября 2010

Использование saveas.Сохраните свой сюжет в виде файла FIG, чтобы иметь полный контроль над ним позже (в отличие от JPG).

Выберите шаблон листов, а затем используйте subplot, чтобы отобразить несколько фигур водин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...