子图如何工作以及MATLAB中子图(121)和子图(1,2,1)之间的区别是什么?

时间:2014-06-21 02:45:39

标签: matlab

我对subplot的工作原理有点不清楚。具体来说,MATLAB中subplot(121)subplot(1,2,1)之间有什么区别?我试图搜索subplot文档,但我似乎无法找到我要找的内容。

1 个答案:

答案 0 :(得分:41)

长话短说,没有区别。 subplot的工作原理如下:

subplot(m,n,p); %//or
subplot(mnp);

subplot中有三个号码。 subplot在同一窗口中放置多个数字。您可以将绘图放在m x n网格中,其中m包含行数,n包含图中的列数。 p确定您希望将地块放置在网格中的位置。数字p1增加到m x n,图表从左到右,从上到下排列。

在这种情况下,当您执行subplot(1,2,1);subplot(121);时,您希望拥有一个行和两个列数字。最后一个数字p=1表示您希望将地图放在最多列中。当您执行subplot(1,2,2);subplot(122);时,这是p=2时间,并且您希望将图表放在右侧最多列中。

您如何使用subplot的方式如下:

  1. 首先在此窗口中确定您想要的多少行图和列数(例如mn)。
  2. 生成一个空白figure窗口
  3. 对于您要创建的每个地块......
    • 致电subplot并选择您希望该地方出现的位置。
    • 编写必要的代码以创建您的情节,就像只占用单一窗口的情节一样。
    • 绘制数据
  4. 对我们的每个情节重复步骤#3,直到我们用完subplot个插槽。
  5. 这是一个说明性的例子。让我们在同一个窗口中创建一个窗口,其中包含两个行和三个列。就这样:

    figure;
    rng(10); %// Set seed for reproducibility
    subplot(2,3,1);
    x = rand(100,1);
    y = rand(100,1);
    plot(x,y,'b.');
    title('First plot');
    subplot(2,3,2);
    x = rand(100,1);
    y = rand(100,1);
    plot(x,y,'b.');
    title('Second plot');
    subplot(2,3,3);
    x = rand(100,1);
    y = rand(100,1);
    plot(x,y,'b.');
    title('Third plot');
    subplot(2,3,4);
    x = rand(100,1);
    y = rand(100,1);
    plot(x,y,'b.');
    title('Fourth plot');
    subplot(2,3,5);
    x = rand(100,1);
    y = rand(100,1);
    plot(x,y,'b.');
    title('Fifth plot');
    subplot(2,3,6);
    x = rand(100,1);
    y = rand(100,1);
    plot(x,y,'b.');
    title('Sixth plot');
    

    以上代码的作用是我们为100 x 1x对生成y的随机点集,并在整个窗口内的多个位置绘制它们。请注意,subplot的最后一个参数线性增加,而前两个参数保持不变必须确保您知道在开始绘图之前 整个窗口中需要多少个数字。上面描述的代码的图如下所示:

    enter image description here

    您还可以为p指定点的向量。但是,如果您这样做,必须以这种方式调用subplotsubplot(m,n,p);。如果p单个号码,则subplot(m,n,p);subplot(mnp)将起作用。

    如果您指定p向量,那么您将做的一个图表将占用同一图中的多个空格/广告位窗口。例如,如果您执行了:subplot(2,3,1:3);,则会占用一个图,占据图中的整个第一行。然后,您可以在插槽4,5和6中发出更多绘图。换句话说:

    figure;
    rng(10); %// Set seed for reproducibility
    subplot(2,3,1:3);
    x = rand(100,1);
    y = rand(100,1);
    plot(x,y,'b.');
    title('First plot');
    subplot(2,3,4:5);
    x = rand(100,1);
    y = rand(100,1);
    plot(x,y,'b.');
    title('Second plot');
    subplot(2,3,6);
    x = rand(100,1);
    y = rand(100,1);
    plot(x,y,'b.');
    title('Third plot');
    

    该图看起来像:

    enter image description here

    正如您所看到的,我们使用subplot(2,3,1:3);占用了第一行和第一个图。第二个图使用p=4,p=5占用广告位subplot(2,3,4:5);。这占据第二行,第一列和第二列。最后,我们的最后一个图使用subplot(2,3,6);占据第二行,第三列。请记住,插槽从左到右,从上到下,p不仅可以是单个数字,还可以是矢量。如果你想占用前两行和两列,你可以subplot(2,3,[1 2 4 5]);现在,如果你想占据整个最右边的列,你可以subplot(2,3,[3 6]);,或者,如果您只想要最右侧列中最顶部的位置,则可以执行subplot(2,3,3);subplot(233);,然后如果要处理最后一列和右下角的最后一个位置,可以subplot(2,3,6);subplot(236);

    我想确保你记住的最后一件事是你需要确保在决定展示你的情节之前致电subplot 。完成后,切换到下一个插槽并继续工作。

    希望这有帮助!祝你好运!