2011-07-13 9 views
42

Powiel możliwe:
MATLAB subplot marginJak zmniejszyć granice wokół wątków w programie Matlab?

w Matlab, dużej ilości miejsca marnuje się wokół wątków. Na przykład, w tym przykładzie:

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 

Example of wasted white space in subplots

ponad 50% powierzchni na rysunku traconej jako „puste” Chciałbym się kurczyć, że puste miejsce w dół, ale okazały się bezskuteczne do zidentyfikować mechanizm, który to umożliwi. Myśli?

Dzięki John

+2

Tutaj to lista innych możliwych Odpowiednie rozwiązania: [tight subplot] (http://www.mathworks.com/matlabcentral/fileexchange/27991-tight-subplot), [jointfig.m] (http://www.mathworks.com/matlabcentral/fileexchange/304 -jointfig-m), [Niektóre sztuczki Matlaba do robienia figurek] (http://nibot-lab.livejournal.com/73290.html), [Przydatne małe narzędzie] (http://groups.google.com/group/ comp.soft-sys.matlab/browse_thread/thread/5706e8dfbb4a418/f5154f1df6efaff4), [Zmniejszenie szarej przestrzeni wokół obrazów na rysunku] (http://www.mathworks.com/matlabcentral/answers/6254-reduce-grey-space- around-images-in-a-figure) – Amro

Odpowiedz

45

Funkcja subaxis na giełdzie plików pozwala określić marginesy dla podpól.

Przykład użycia:

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 

enter image description here

6

Można je ustawić się (lub programowo) z użyciem

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

Domyślnie współrzędne są znormalizowane. Zatem pozycja [0,1 0,1 0,5 0,5] rozpocznie się od 10% drogi w od lewego dolnego rogu i będzie miała szerokość równą na połowie szerokości figury, a wysokość będzie równa połowie wysokości sylwetki .

Zobacz akceptowaną odpowiedź na wbudowane rozwiązanie dotyczące marginesów i dopełnienia.

4

spróbować zmniejszyć wartości domyślne w ukrytych osi LooseInsets nieruchomość, jak opisano w http://UndocumentedMatlab.com/blog/axes-looseinset-property/

Na przykład:

set(gca, 'LooseInset', get(gca,'TightInset')) 
+0

Przynajmniej w moim przykładzie to nie robi nic na 2011a. – John

+0

Dodatkowe miejsce zajmują ukryte znaczniki osi X i Y, i nie sądzę, że można je wyeliminować. Ale możesz poprawić sytuację w następujący sposób: 'rysunek (2); dla i = 1: 25; hax = osie(); spisek (t, sin (i * t)); oś ciasna; oś wyłączona; rowIdx = fix ((i-1)/5); colIdx = mod (i-1,5); newPos = [.2 * colID, 0,8-.2 * rowIdx, .2, .2]; set (gca, 'outer', newPos), end' –

+1

Czy LooseInset działa z subplots? – roni

Powiązane problemy