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

use*_*632 12 matlab

我对如何subplot运作有点不清楚.具体来说,MATLAB subplot(121)subplot(1,2,1)MATLAB 之间有什么区别?我试图搜索subplot文档,但我似乎无法找到我要找的东西.

ray*_*ica 42

长话短说,没有区别.如何subplot工作如下:

subplot(m,n,p); %//or
subplot(mnp);
Run Code Online (Sandbox Code Playgroud)

你有三个号码subplot. 在同一窗口中subplot放置多个数字.您可以将绘图放在m x n网格中,其中m包含行数并n包含图中的列数. p决定哪里要放置在网格中的情节.数字p1最多增加到m x n,并且图表从左到右,从上到下放置.

在这种情况下,当你做subplot(1,2,1);或者subplot(121);,你想有一个2列价值的数字.最后一个数字p=1表示您希望将绘图放在最左侧的列中.当你这样做subplot(1,2,2);或者subplot(122);,这是当p=2你想放置在小区右侧最栏.

您如何使用subplot以下列方式:

  1. 确定有多少你想要这个窗口中的行和情节列第一(即mn).
  2. 产生一个空白的figure窗口
  3. 对于您要创建的每个地块......
    • 调用subplot并选择您想要绘图的位置的正确位置.
    • 编写必要的代码来创建您的绘图,就像只占用一个窗口的绘图一样.
    • 绘制数据
  4. 对我们的每个绘图重复步骤#3,直到我们用完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');
Run Code Online (Sandbox Code Playgroud)

上面的代码所做的是我们生成随机的点集,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');
Run Code Online (Sandbox Code Playgroud)

该图看起来像:

在此输入图像描述

如您所见,我们使用第一个绘图占据了第一行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]); Now,如果你想占据整个最右边的列,你可以这样做subplot(2,3,[3 6]);,或者如果你只想要最右边列中最顶层的位置,你可以做subplot(2,3,3);或者subplot(233);,如果你想要解决最后一列和右下角的最后一个位置,你可以做subplot(2,3,6);subplot(236);

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

希望这可以帮助!祝好运!

  • +1哇.*很棒*精心解答; 很好地利用图像. (11认同)
  • "多个插槽"的使用非常酷.不经常使用.+1 (3认同)