2017-02-07 88 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]。不知道那里发生了什么。

相关问题