2017-02-07 95 views
4

注意:在我的情況下,這個問題發生在2016bb。爲什麼副圖位置會改變?

我儘量讓與3x4的次要情節一起人物,蜱 只在最左側和底部的次要情節的標籤。然而,當我運行下面的代碼,第一個情節似乎改變大小:

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',[]) 

請注意,我打印pos。第一個插曲輸出是

pos = 

    0.1000 0.6500 0.2000 0.3000 

,但是當我再仔細檢查第一次要情節的位置...

ax(1).Position 

ans = 

    0.1300 0.7093 0.1566 0.2157 

和劇情是這樣的: enter image description here

而且,之後我試圖操縱第一個小區的位置,但這隻會使情況變得更糟,如下所示:

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

enter image description here

所有幫助表示讚賞!

+1

無法在MATLAB 2014b中重現。當我運行你的代碼時,我得到了一個很好的子圖,它們都很整齊。 –

+0

嘗試調整數字窗口的大小 –

+1

在2016a中也不可重現。這就是我所得到的:https://i.stack.imgur.com/xFSnb.jpg –

回答

3

我可以在R2016b中重現問題。有趣的是,當你這樣做它的工作原理:

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',[]) 

唯一的變化是,我首先創建的插曲,然後設置其位置。

我不完全確定原因。但是,比較兩個版本中的所有軸的字段,我注意到在您的原始版本中,第一個軸的PlotBoxAspectRatio的值爲[0.9670 1.0000 0.9670],而其他所有軸的PlotBoxAspectRatio的值爲[0.8889 1.0000 0.8889]。在我的「固定」版本中,所有軸都有PlotBoxAspectRatio[0.8889 1.0000 0.8889]。不知道那裏發生了什麼。

相關問題