我对subplot
的工作原理有点不清楚。具体来说,MATLAB中subplot(121)
和subplot(1,2,1)
之间有什么区别?我试图搜索subplot
文档,但我似乎无法找到我要找的内容。
答案 0 :(得分:41)
长话短说,没有区别。 subplot
的工作原理如下:
subplot(m,n,p); %//or
subplot(mnp);
subplot
中有三个号码。 subplot
在同一窗口中放置多个数字。您可以将绘图放在m x n
网格中,其中m
包含行数,n
包含图中的列数。 p
确定您希望将地块放置在网格中的位置。数字p
从1
增加到m x n
,图表从左到右,从上到下排列。
在这种情况下,当您执行subplot(1,2,1);
或subplot(121);
时,您希望拥有一个行和两个列数字。最后一个数字p=1
表示您希望将地图放在左最多列中。当您执行subplot(1,2,2);
或subplot(122);
时,这是p=2
时间,并且您希望将图表放在右侧最多列中。
您如何使用subplot
的方式如下:
m
和n
)。figure
窗口subplot
并选择您希望该地方出现的位置。subplot
个插槽。这是一个说明性的例子。让我们在同一个窗口中创建一个窗口,其中包含两个行和三个列。就这样:
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 1
和x
对生成y
的随机点集,并在整个窗口内的多个位置绘制它们。请注意,subplot
的最后一个参数线性增加,而前两个参数保持不变。 必须确保您知道在开始绘图之前 整个窗口中需要多少个数字。上面描述的代码的图如下所示:
您还可以为p
指定点的向量。但是,如果您这样做,必须以这种方式调用subplot
:subplot(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');
该图看起来像:
正如您所看到的,我们使用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
。完成后,切换到下一个插槽并继续工作。
希望这有帮助!祝你好运!