为什么Axes'取决于Matlab中的位置?

时间:2016-03-27 14:04:29

标签: image matlab

我在代码1中将位置定义为常量(101),而在代码2中定义为十进制数(1.01)。 我正在考虑轴上的代码之间的区别'蜱。 代码1

hFig=figure('Visible', 'on', 'Units', 'inches', 'Position', [0 0 15 15]); 
set(gca, 'position', [0 0 101 101]);
xlabel(gca, 'Time/s');
x = 0:0.01:1;
y = sin(x);
plot(x,y);

没有轴的输出'蜱

enter image description here

代码2

hFig=figure('Visible', 'on', 'Units', 'inches', 'Position', [0 0 15 15]);     
set(gca, 'position', [0 0 1.01 1.01]);
xlabel(gca, 'Time/s');
x = 0:0.01:1;
y = sin(x);
plot(x,y);

轴输出'蜱

enter image description here

在这两种情况下,由于某种原因,没有xlabel的输出。 这可能与轴有关。滴答声 - 问题。 更改命令的位置并未改变行为。 有斧头'在代码2的输出中打勾但在代码1的输出中没有。

为什么轴和输出之间存在这样的差异?蜱?

1 个答案:

答案 0 :(得分:1)

这里有三个问题。

  1. 您在不明确创建gca的情况下继续引用axes。因此,您的xlabel正在应用于错误的内容,因为gca 实际指的是某个其他图中的axes。要解决此问题,请尝试类似的方法。

    fig = figure();
    axes('Parent', fig)   % Explicitly create the axes
    xlabel(gca, 'xlabel')
    
  2. Position的{​​{1}}属性(默认情况下)是规范化单位。这意味着所有值都在0和1之间。正如您在第二个示例中所看到的,您将位置数组的最后两个元素(宽度和高度)设置为1.01,大于1并使您绘制< em>更大比你的数字。在第一个示例中,您将宽度和高度设置为101,方式高于1,并使轴的大小比您的图大100倍。如果你仔细观察,你甚至可以看到你的轴在第一种情况下是如此之大,以至于它看起来像一条不同的曲线。此外,这就是您没有看到任何轴嘀嗒声的原因。

  3. axes是轴本身的位置,包括xticks,yticks,xlabels,ylabels或title。由于您有效地使您的轴与您的图形一样大,因此您将看不到任何这些标签。如果要设置轴位置并自动考虑刻度标签等所需的空间,则需要设置Position属性。

    OuterPosition