Как да намалим границите около подплотовете в matlab?

В matlab се губи необичайно много пространство около подплотовете. Например в този пример:

t = 0:0.001:2*pi+0.001;
figure(2);
for i = 1 : 25;
    subplot(5,5,i);
    plot(t, sin(i*t));
    axis off
end

Пример за загубено бяло пространство в подграфи

над 50% от пространството на фигурата се губи като празно Бих искал да свия това празно пространство, но не успях да идентифицирам механизъм за това. мисли?


person John    schedule 13.07.2011    source източник
comment
Забележка: От 2019b Mathworks реши този проблем с командата tiledlayout.   -  person John    schedule 21.03.2020


Отговори (3)


Функцията subaxis във File Exchange ви позволява да укажете полета за подграфи.

Примерна употреба:

t = 0:0.001:2*pi+0.001;
figure(2);
for i = 1 : 25;
    subaxis(5,5,i, 'Spacing', 0.03, 'Padding', 0, 'Margin', 0);
    plot(t, sin(i*t));
    axis tight
    axis off
end

въведете описание на изображението тук

person nibot    schedule 13.07.2011

Можете да ги позиционирате сами (или програмно), като използвате

subplot('Position',[left bottom width height]);

По подразбиране координатите са нормализирани. Така позиция от [0,1 0,1 0,5 0,5] ще започне на 10% от пътя навътре от долния ляв ъгъл и ще има ширина, равна на половината от ширината на фигурата, и височина, равна на половината от височината на фигурата.

Вижте приетия отговор за вградено решение за полета и подложки.

person Nicolas Renold    schedule 13.07.2011

Опитайте се да намалите стойностите по подразбиране в свойството LooseInsets на скритите оси, както е описано в http://UndocumentedMatlab.com/blog/axes-looseinset-property/

Например:

set(gca, 'LooseInset', get(gca,'TightInset'))
person Yair Altman    schedule 14.07.2011
comment
Поне в моя пример това не прави нищо на 2011a. - person John; 15.07.2011
comment
допълнителното пространство се заема от скритите етикети за отметки на осите X & Y и не вярвам, че те могат да бъдат елиминирани. Но можете да подобрите ситуацията, както следва: figure(2); for i = 1 : 25; hax=axes(); plot(t, sin(i*t)); axis tight; axis off; rowIdx=fix((i-1)/5); colIdx=mod(i-1,5); newPos=[.2*colIdx,0.8-.2*rowIdx,.2,.2]; set(gca,'outer',newPos), end - person Yair Altman; 18.07.2011
comment
LooseInset работи ли с подзаписи? - person roni; 16.09.2013