subplot

Создайте оси в плиточных положениях

Описание

пример

subplot(m,n,p) разделяет текущую фигуру на m-by- n сетка и создает оси в положении, заданном p. MATLAB® числа подграфиков положения по строкам. Первый подграфик является первым столбцом первой строки, второй подграфик является вторым столбцом первой строки и так далее. Если оси существуют в заданном положении, то эта команда делает оси текущей системы координат.

пример

subplot(m,n,p,'replace') удаляет существующие оси в положении p и создает новые оси.

subplot(m,n,p,'align') создает новые оси так, чтобы графики графика были выровнены. Эта опция является поведением по умолчанию.

пример

subplot(m,n,p,ax) преобразует существующие оси, ax, в подграфик на том же рисунке.

пример

subplot('Position',pos) создает оси в пользовательском положении, заданном pos. Используйте эту опцию для размещения подграфика, который не выравнивается по положениям сетки. Задайте pos как четырехэлементный вектор вида [left bottom width height]. Если новые оси перекрываются существующими осями, новые оси заменяют существующие.

subplot(___,Name,Value) изменяет свойства осей, используя один или несколько аргументы пары "имя-значение". Установите свойства осей после всех других входных параметров.

пример

ax = subplot(___) создает Axes объект, PolarAxes объект, или GeographicAxes объект. Использование ax для внесения будущих изменений в оси.

пример

subplot(ax) делает оси заданными ax текущие системы координат для родительского рисунка. Эта опция не делает родительскую фигуру текущей фигурой, если она еще не является текущей фигурой.

Примеры

свернуть все

Создайте рисунок с двумя сложенными подграфиками. Постройте график синусоиды в каждом из них.

subplot(2,1,1);
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)

subplot(2,1,2); 
y2 = sin(5*x);
plot(x,y2)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Создать рисунок, разделенную на четыре подграфика. Постройте график синусоиды в каждом из них и назовите каждый подграфик.

subplot(2,2,1)
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Subplot 1: sin(x)')

subplot(2,2,2)
y2 = sin(2*x);
plot(x,y2)
title('Subplot 2: sin(2x)')

subplot(2,2,3)
y3 = sin(4*x);
plot(x,y3)
title('Subplot 3: sin(4x)')

subplot(2,2,4)
y4 = sin(8*x);
plot(x,y4)
title('Subplot 4: sin(8x)')

Figure contains 4 axes. Axes 1 with title Subplot 1: sin(x) contains an object of type line. Axes 2 with title Subplot 2: sin(2x) contains an object of type line. Axes 3 with title Subplot 3: sin(4x) contains an object of type line. Axes 4 with title Subplot 4: sin(8x) contains an object of type line.

Создайте рисунок, содержащее три подграфика. Создайте два подграфиков в верхней половине рисунка и третий подграфик, который охватывает нижнюю половину рисунка. Добавляйте заголовки к каждому подграфику.

subplot(2,2,1);
x = linspace(-3.8,3.8);
y_cos = cos(x);
plot(x,y_cos);
title('Subplot 1: Cosine')

subplot(2,2,2);
y_poly = 1 - x.^2./2 + x.^4./24;
plot(x,y_poly,'g');
title('Subplot 2: Polynomial')

subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('Subplot 3 and 4: Both')

Figure contains 3 axes. Axes 1 with title Subplot 1: Cosine contains an object of type line. Axes 2 with title Subplot 2: Polynomial contains an object of type line. Axes 3 with title Subplot 3 and 4: Both contains 2 objects of type line.

Создайте рисунок с четырьмя диаграммами лист-ствол случайных данных. Затем замените вторую подграфику на пустые оси.

for k = 1:4
    data = rand(1,10);
    subplot(2,2,k)
    stem(data)
end

Figure contains 4 axes. Axes 1 contains an object of type stem. Axes 2 contains an object of type stem. Axes 3 contains an object of type stem. Axes 4 contains an object of type stem.

subplot(2,2,2,'replace')

Figure contains 4 axes. Axes 1 contains an object of type stem. Axes 2 contains an object of type stem. Axes 3 contains an object of type stem. Axes 4 is empty.

Создать рисунок с двумя подграфиками, которые не выровнены по положениям сетки. Задайте пользовательскую позицию для каждого подграфика.

pos1 = [0.1 0.3 0.3 0.3];
subplot('Position',pos1)
y = magic(4);
plot(y)
title('First Subplot')

pos2 = [0.5 0.15 0.4 0.7];
subplot('Position',pos2)
bar(y)
title('Second Subplot')

Figure contains 2 axes. Axes 1 with title First Subplot contains 4 objects of type line. Axes 2 with title Second Subplot contains 4 objects of type bar.

Создайте рисунок с двумя полярными осями. Создайте график полярных линий в верхней подграфике и диаграмме поля точек полярный график в нижней подграфике.

figure
ax1 = subplot(2,1,1,polaraxes);
theta = linspace(0,2*pi,50);
rho = sin(theta).*cos(theta);
polarplot(ax1,theta,rho)

ax2 = subplot(2,1,2,polaraxes);
polarscatter(ax2,theta,rho)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type scatter.

Создать рисунок с двумя подграфиками. Назначьте Axes объекты к переменным ax1 и ax2. Задайте Axes объекты как входы функций построения графика, чтобы убедиться, что функции строятся в определенном подграфике.

ax1 = subplot(2,1,1);
Z = peaks;
plot(ax1,Z(1:20,:))

ax2 = subplot(2,1,2);  
plot(ax2,Z)

Figure contains 2 axes. Axes 1 contains 49 objects of type line. Axes 2 contains 49 objects of type line.

Измените оси путем установки свойств Axes объекты. Измените размер шрифта для верхнего подграфика и ширину линии для нижнего подграфа. Некоторые функции построения графика задают свойства осей. Выполните функции построения графика перед указанием свойств осей, чтобы избежать переопределения существующих настроек свойств осей. Используйте запись через точку для того, чтобы задать свойства.

ax1.FontSize = 15;
ax2.LineWidth = 2;

Figure contains 2 axes. Axes 1 contains 49 objects of type line. Axes 2 contains 49 objects of type line.

Создайте рисунок с несколькими подграфиками. Сохраните Axes объекты в векторных ax. Затем сделайте второй подграфик текущей системы координат. Создайте график линий и измените пределы по осям для второго подграфика. По умолчанию графические функции нацелены на текущие системы координат.

for k = 1:4
    ax(k) = subplot(2,2,k);
end

subplot(ax(2))
x = linspace(1,50);
y = sin(x);
plot(x,y,'Color',[0.1, 0.5, 0.1])
title('Second Subplot')
axis([0 50 -1 1])

Figure contains 4 axes. Axes 1 is empty. Axes 2 with title Second Subplot contains an object of type line. Axes 3 is empty. Axes 4 is empty.

Создайте линию графика. Затем преобразуйте оси так, чтобы это был нижний подграфик рисунка. Функция subplot использует рисунок, на которой существовали исходные оси.

x = linspace(1,10);
y = sin(x);
plot(x,y)
title('Sine Plot')

Figure contains an axes. The axes with title Sine Plot contains an object of type line.

ax = gca;
subplot(2,1,2,ax)

Figure contains an axes. The axes with title Sine Plot contains an object of type line.

Объедините оси, существующие на отдельных рисунках, в одну фигуру с подграфиками.

Создать два графика на двух разных рисунках. Назначьте Axes объекты к переменным ax1 и ax2. Назначьте Legend объект переменной lgd.

figure
x = linspace(0,10);
y1 = sin(x);
plot(x,y1)
title('Line Plot 1')

Figure contains an axes. The axes with title Line Plot 1 contains an object of type line.

ax1 = gca;

figure
y2 = 2*sin(x);
plot(x,y2)
title('Line Plot 2')
lgd = legend('2*Sin(x)');

Figure contains an axes. The axes with title Line Plot 2 contains an object of type line. This object represents 2*Sin(x).

ax2 = gca;

Создайте копии двух Axes объекты, использующие copyobj. Укажите родительские элементы скопированных осей как новый рисунок. Поскольку легенды и шкалы палитры не копируются со связанными осями, скопируйте легенду с осями.

fnew = figure;
ax1_copy = copyobj(ax1,fnew);
subplot(2,1,1,ax1_copy)

copies = copyobj([ax2,lgd],fnew);
ax2_copy = copies(1);
subplot(2,1,2,ax2_copy)

Входные параметры

свернуть все

Количество строк сетки, заданное в виде положительного целого числа.

Типы данных: single | double

Количество столбцов сетки, заданное в виде положительного целого числа.

Типы данных: single | double

Положение сетки для новых осей, заданное как скаляр или вектор положительных целых чисел.

  • Если p является скалярным положительным целым числом, тогда subplot создает подграфик в положении сетки p.

  • Если p является вектором положительных целых чисел, тогда subplot создает подграфик, охватывающий положения сетки, перечисленные в p.

Пример: subplot(2,3,1) создает подграфик в положении 1.

Пример: subplot(2,3,[2,5]) создает подграфик, охватывающий положения 2 и 5.

Пример: subplot(2,3,[2,6]) создает подграфик, охватывающий положения 2, 3, 5 и 6.

Типы данных: single | double

Пользовательское положение для новых осей, заданное как четырехэлементный вектор вида [left bottom width height].

  • The left и bottom элементы определяют положение нижнего левого угла подграфика относительно нижнего левого угла рисунка.

  • The width и height элементы определяют размерности подграфика.

Задайте значения между 0 и 1 которые нормированы относительно внутренней части рисунка.

Примечание

При использовании скрипта для создания подграфиков MATLAB не завершает работу над Position значение свойства до drawnow выдается команда, или MATLAB возвращается в ожидание пользовательской команды. The Position значение свойства для подграфика может быть изменено до тех пор, пока скрипт не обновит график или не выйдет из него.

Пример: subplot('Position',[0.1 0.1 0.45 0.45])

Типы данных: single | double

Существующие оси для преобразования тока в подграфик, заданный как Axes объект, a PolarAxes объект, a GeographicAxes объект или графический объект с PositionConstraint свойство, такое как HeatmapChart объект.

Чтобы создать пустые полярные или географические оси в положении подграфика, задайте ax как polaraxes или geoaxes функция. Для примера, subplot(2,1,2,polaraxes).

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: subplot(m,n,p,'XGrid','on')

Некоторые функции построения графика переопределяют настройки свойств. Рассмотрите настройку свойств осей после графического изображения. Свойства, которые можно задать, зависят от типа осей:

.

Совет

  • Чтобы удалить содержимое рисунка, используйте clf. Например, можно удалить существующее размещение подграфика из рисунка перед созданием нового размещения подграфика.

  • Для наложения осей используйте axes вместо этого команда. The subplot функция удаляет существующие оси, которые перекрывают новые оси. Для примера, subplot('Position',[.35 .35 .3 .3]) удаляет любые базовые оси, но axes('Position',[.35 .35 .3 .3]) размещает новые оси в середине рисунка, не удаляя нижележащие оси.

  • subplot(111) является исключением и не идентично по поведению subplot(1,1,1). Для обеспечения обратной совместимости subplot(111) является частным случаем подграфика, который не сразу создает оси, но настраивает рисунок так, чтобы следующая графическая команда выполнялась clf reset. Следующая графическая команда удаляет все дочерние элементы рисунка и создает новые оси в положении по умолчанию. subplot(111) не возвращает Axes объект и ошибка происходит, если код задает возвращаемый аргумент.

Альтернативная функциональность

Используйте tiledlayout и nexttile функции для создания конфигурируемого плиточного размещения графиков. Опции строения включают:

  • Управление интервалом между графиками и вокруг ребер размещения

  • Опция для общего заголовка в верхней части размещения

  • Опции для общих меток осей x - и y -

  • Опция для управления тем, имеет ли плиточное размещение фиксированный размер или переменный размер, который может переплетаться

Для получения дополнительной информации см. «Построение нескольких графиков».

Представлено до R2006a