【发布时间】:2016-04-25 16:38:27
【问题描述】:
我正在编写一个需要精确定位一些子图的 gui:
h = figure('Units','pixels','Position',[1920 432 1881 982]*0.5);
ax.VSize = 815.3800*0.5
ax.VOffset = 48.9228*0.5
ax.HSize = 1.8063e+03*0.5
ax.HOffset = 56.4480*0.5
subax.VSize = 0.33*(ax.VSize-3*ax.VOffset);
subax.HSize = ax.HSize;
subplot(313,'units','pixels','Position',[ax.HOffset ax.VOffset ax.HSize subax.VSize ])
subplot(312,'units','pixels','Position',[ax.HOffset 2*ax.VOffset+subax.VSize subax.HSize subax.VSize])
subplot(311,'units','pixels','Position',[ax.HOffset 3*ax.VOffset+2*subax.VSize subax.HSize subax.VSize])
这给了我想要的结果:
但是,当我将子图的顺序更改为:
subplot(311,'units','pixels','Position',[ax.HOffset 3*ax.VOffset+2*subax.VSize subax.HSize subax.VSize])
subplot(312,'units','pixels','Position',[ax.HOffset 2*ax.VOffset+subax.VSize subax.HSize subax.VSize])
subplot(313,'units','pixels','Position',[ax.HOffset ax.VOffset ax.HSize subax.VSize ])
我刚刚绘制了最后一个子图:
我真的不明白为什么会这样? 为什么子图会相互覆盖?
不幸的是,绘图顺序对我来说很重要,那么我该如何解决这个问题?
有趣的是,我无法用其他数量或排列的子图重现该问题,例如:
subax.VSize = 0.5*(ax.VSize-2*ax.VOffset);
subax.HSize = 0.5*(ax.HSize-2*ax.HOffset);
subplot(221,'units','pixels','Position',[ax.HOffset 2*ax.VOffset+subax.VSize subax.HSize subax.VSize])
subplot(222,'units','pixels','Position',[2*ax.HOffset+subax.HSize 2*ax.VOffset+subax.VSize subax.HSize subax.VSize])
subplot(223,'units','pixels','Position',[ax.HOffset ax.VOffset subax.HSize subax.VSize ])
subplot(224,'units','pixels','Position',[2*ax.HOffset+subax.HSize ax.VOffset subax.HSize subax.VSize ])
【问题讨论】:
-
我无法在 R2014b (OS X) 上复制此问题。您使用的是什么平台和版本?
-
Windows 7 上的Matlab R2015b。似乎与this有关。
标签: matlab plot matlab-figure