Я немного не понимаю, как работает subplot
. В частности, в чем разница между subplot(121)
и subplot(1,2,1)
в MATLAB? Я попытался выполнить поиск документации subplot
, но я не могу найти то, что ищу.
Как работает подзадача и какова разница между подзаговором (121) и подзаголовком (1,2,1) в MATLAB?
Ответ 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
увеличивается линейно, а первые два параметра остаются теми же. Вы должны убедиться, что знаете, сколько цифр вы хотите в общем окне до, вы начинаете печать. Рисунок, который описывает вышеописанный код, выглядит следующим образом:
Вы также можете указать вектор точек для 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
до, вы решили показать свой сюжет. Как только вы закончите, переходите к следующему слоту и продолжайте работать.
Надеюсь, это поможет! Удачи!