【发布时间】:2018-11-28 15:01:57
【问题描述】:
我在回复this 问题时遇到了一个问题——有点,这更像是一种好奇心。
Matlab 子图、自动图还是位置属性谁有优先权,为什么?
我尝试了一些测试,得到了一些奇怪的结果,如下图所示,
这是使用的代码。
a=1:10;b=a.^2;
figure
subplot('Position',[0.3,0.7,0.5,0.1]);plot(a,b,'-k');legend('Black');
subplot('Position',[0.3,0.3,0.5,0.1]);plot(a,b,'-r');legend('Red');
figure
subplot(2,1,1);plot(a,b,'-k');legend('Black');
subplot(2,1,2);plot(a,b,'-r');legend('Red');
figure
subplot(2,1,1,'Position',[0.3,0.7,0.5,0.1]);plot(a,b,'-k');legend('Black');
subplot(2,1,2,'Position',[0.3,0.3,0.5,0.1]);plot(a,b,'-r');legend('Red');
如你所见,最后一张图是乱七八糟的,在合适的位置生成了一个轴,但是使用了
使用 3 个图和与之前相同的方案(位置数变化较小),最后一个具有以下输出:
这也好不了多少。对于“仅一个情节”的情况,它遵循手动 Position 设置。
我在manual 中找到了这条注释
使用脚本创建子图时,MATLAB 不会最终确定 Position 属性值,直到发出 drawow 命令或 MATLAB 返回等待用户命令。子图的 Position 属性值可能会发生变化,直到脚本刷新图或退出。
有了这个,我对这个问题有了一个想法。仅在绘制第二个图形时调用该位置,但随后它会覆盖第一个位置调用,使第二个轴为空。在此之后,在具有 3 个图的图中,它应该在第二个图或第一个图上写入最后一个调用 green,但它会转到最后一个,正如一个最初的愿望。
作为额外的注释,这是 2017a 版本中的行为。 2016a(来自this answer)工作正常。 2018a 工作正常,但会生成有关重复输入的警告。
知道 Matlab 如何使用定义多个子图的子图方案以及产生此输出的确切原因(在这种情况下通过明显不兼容的指令举例说明)?
【问题讨论】: