Как работает подзадача и какова разница между подзаговором (121) и подзаголовком (1,2,1) в MATLAB?

Я немного не понимаю, как работает subplot. В частности, в чем разница между subplot(121) и subplot(1,2,1) в MATLAB? Я попытался выполнить поиск документации subplot, но я не могу найти то, что ищу.

Ответ 1

Короче говоря, нет никакой разницы. Как работает 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 и выберите правильное местоположение (места), где вы хотите, чтобы график отображался.
    • Напишите необходимый код для создания вашего сюжета, как и для всего сюжета, занимающего одно окно.
    • Выделите свои данные
  • Повторите шаг №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');

Что делает вышеприведенный код, так это то, что мы генерируем случайные множества точек, которые 100 x 1 для каждой пары x и y, и мы строим их в нескольких местах в общем окне. Обратите внимание, что последний параметр subplot увеличивается линейно, а первые два параметра остаются теми же. Вы должны убедиться, что знаете, сколько цифр вы хотите в общем окне до, вы начинаете печать. Рисунок, который описывает вышеописанный код, выглядит следующим образом:

enter image description here

Вы также можете указать вектор точек для 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');

Рисунок выглядит так:

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 до, вы решили показать свой сюжет. Как только вы закончите, переходите к следующему слоту и продолжайте работать.

Надеюсь, это поможет! Удачи!