2017-02-07 3 views
4

Hinweis: Dieses Problem tritt in 2016b in meinem Fall auf.Warum ändert sich die Subplot-Position?

Ich versuche, eine Figur mit 3x4 Unterplots zusammen zu machen, mit Tick Etiketten nur auf der linken und unteren Unterplots. Allerdings, wenn ich den Code ausführen, scheint das erste Grundstück zu ändern:

figure 
hold on 
n = 12; 
ax = gobjects(n,1); 
for k = 1:n 
pos = [0.1+0.2*(mod(k-1,4)), 0.65-0.3*floor(k/4-0.01), 0.2, 0.3] 
ax(k) = subplot(3,4,k,'Position',pos); 
end 
set(ax(1:8),'XTick',[]) 
set(ax([2:4 6:8 10:12]),'YTick',[]) 

Bitte beachte, dass ich pos bin drucken. Der Ausgang des ersten subplot ist

pos = 

    0.1000 0.6500 0.2000 0.3000 

aber wenn ich dann die Position des ersten subplot doppeltzukontrollieren ...

ax(1).Position 

ans = 

    0.1300 0.7093 0.1566 0.2157 

und die Handlung sieht wie folgt aus: enter image description here

Darüber Ich habe versucht, die Position des ersten Subplots danach zu manipulieren, aber es macht es nur schlimmer, siehe unten:

ax(1).Position = [0.1000, 0.6500, 0.2000, 0.3000]; 

enter image description here

Alle Hilfe geschätzt!

+1

Kann nicht in MATLAB 2014b reproduziert werden. Wenn ich Ihren Code ausführe, bekomme ich ein nettes Netz von Unterverzeichnissen, die alle aufgeräumt sind. –

+0

Versuchen Sie, das Zahlenfenster zu verkleinern –

+1

Auch in 2016a nicht reproduzierbar. Das ist, was ich bekomme: https://i.stack.imgur.com/xFSnb.jpg –

Antwort

3

Ich kann das Problem in R2016b reproduzieren. Interessanterweise funktioniert es, wenn Sie dies tun:

figure 
hold on 
n = 12; 
ax = gobjects(n,1); 
for k = 1:n 
    pos = [0.1+0.2*(mod(k-1,4)), 0.65-0.3*floor(k/4-0.01), 0.2, 0.3] 
    ax(k) = subplot(3,4,k); 
    set(ax(k),'Position',pos); 
end 
set(ax(1:8),'XTick',[]) 
set(ax([2:4 6:8 10:12]),'YTick',[]) 

Die einzige Änderung ist, dass ich zuerst die subplot erstellen und dann seine Position.

Ich bin mir nicht ganz sicher über den Grund. Beim Vergleich aller Felder der Achsen in beiden Versionen habe ich jedoch festgestellt, dass die erste Achse in Ihrer ursprünglichen Version eine von [0.9670 1.0000 0.9670] hat, während alle anderen eine von [0.8889 1.0000 0.8889] haben. In meiner "festen" Version haben alle Achsen die PlotBoxAspectRatio von [0.8889 1.0000 0.8889]. Nicht sicher, was genau dort passiert.

Verwandte Themen