Построение нескольких графиков

В этом примере показано, как объединить графики в тех же осях с помощью hold function, и как создать несколько осей на рисунке с помощью tiledlayout функция. The tiledlayout функция доступна, начиная с R2019b. Если вы используете более ранний релиз, используйте subplot вместо этого функция.

Построение нескольких графиков на тех же осях координат

По умолчанию новые графики очищают существующие графики и сбрасывают свойства осей, такие как заголовок. Однако можно использовать hold on команда для объединения нескольких графиков в одной оси. Например, постройте график двух линий и график поля точек. После отключите состояние удержания.

x = linspace(0,10,50);
y1 = sin(x);
plot(x,y1)
title('Combine Plots')

hold on

y2 = sin(x/2);
plot(x,y2)

y3 = 2*sin(x);
scatter(x,y3) 

hold off

Figure contains an axes. The axes with title Combine Plots contains 3 objects of type line, scatter.

Когда состояние удержания включено, новые графики не очищают существующие графики или сбрасывают свойства осей, такие как заголовок или подписи по осям. Графики проходят циклически через цвета и стили линии на основе ColorOrder и LineStyleOrder свойства осей. Пределы осей и значений деления могут корректироваться с учетом новых данных.

Отображение нескольких осей на фигуре

Можно отобразить несколько осей на одной фигуре при помощи tiledlayout функция. Эта функция создает мозаичный график размещения, содержащее невидимую сетку плиток по всему рисунку. Каждая плитка может содержать оси для отображения графика. После создания размещения вызовите nexttile функция для размещения объекта осей в компоновке. Затем вызовите функцию построения графика, чтобы построить график в осях. Например, создайте два графика в размещении 2 на 1. Добавить заголовок к каждому графику.

Примечание: Этот код использует tiledlayout функция, которая доступна начиная с R2019b. Если вы используете более ранний релиз, используйте subplot вместо этого функция.

x = linspace(0,10,50);
y1 = sin(x);
y2 = rand(50,1);
tiledlayout(2,1) % Requires R2019b or later

% Top plot
nexttile
plot(x,y1)
title('Plot 1')

% Bottom plot
nexttile
scatter(x,y2)
title('Plot 2')

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

Создание графика, охватывающего несколько строк или столбцов

Чтобы создать график, охватывающий несколько строк или столбцов, задайте span аргумент при вызове nexttile. Например, создайте размещение 2 на 2. Постройте график в первых двух плитках. Затем создайте график, который охватывает одну строку и два столбца.

x = linspace(0,10,50);
y1 = sin(x);
y2 = rand(50,1);

% Top two plots
tiledlayout(2,2) % Requires R2019b or later
nexttile
plot(x,y1)
nexttile
scatter(x,y2)

% Plot that spans
nexttile([1 2])
y2 = rand(50,1);
plot(x,y2)

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

Изменение внешнего вида осей

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

Например, создайте два графика и присвойте объекты осей переменным ax1 и ax2. Измените размер шрифта осей и цвет оси X для первого графика. Добавить линии сетки ко второму графику.

x = linspace(0,10,50);
y1 = sin(x);
y2 = rand(50,1);
tiledlayout(2,1) % Requires R2019b or later

% Top plot
ax1 = nexttile;
plot(ax1,x,y1)
title(ax1,'Plot 1')
ax1.FontSize = 14;
ax1.XColor = 'red';

% Bottom plot
ax2 = nexttile;
scatter(ax2,x,y2)
title(ax2,'Plot 2')
grid(ax2,'on')

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

Управление интервалами вокруг плитки

Можно управлять интервалами между плитками в размещение, задавая Padding и TileSpacing свойства. Для примера отобразите четыре графика в размещение 2 на 2.

x = linspace(0,30);
y1 = sin(x);
y2 = sin(x/2);
y3 = sin(x/3);
y4 = sin(x/4);

% Create plots
t = tiledlayout(2,2); % Requires R2019b or later
nexttile
plot(x,y1)
nexttile
plot(x,y2)
nexttile
plot(x,y3)
nexttile
plot(x,y4)

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

Уменьшите интервалы по периметру размещения и вокруг каждой плитки путем установки Padding и TileSpacing свойства для 'compact'.

t.Padding = 'compact';
t.TileSpacing = 'compact';

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

Отображение общих Заголовков и Подписей по осям

Общий заголовок и общие подписи по осям можно отобразить в размещение. Создайте размещение 2 на 1 t. Затем отобразите линейный график и диаграмму лист-ствол. Синхронизируйте пределы оси X путем вызова linkaxes функция.

x1 = linspace(0,20,100);
y1 = sin(x1);
x2 = 3:17;
y2 = rand(1,15);

% Create plots.
t = tiledlayout(2,1); % Requires R2019b or later
ax1 = nexttile;
plot(ax1,x1,y1)
ax2 = nexttile;
stem(ax2,x2,y2)

% Link the axes
linkaxes([ax1,ax2],'x');

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

Добавить общий заголовок и общие подписи по осям путем передачи t на title, xlabel, и ylabel функций. Переместите графики ближе друг к другу, удалив метки такта оси X из верхнего графика и задав TileSpacing свойство t на 'compact'.

% Add shared title and axis labels
title(t,'My Title')
xlabel(t,'x-values')
ylabel(t,'y-values')

% Move plots closer together
xticklabels(ax1,{})
t.TileSpacing = 'compact';

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

См. также

Функции

Похожие темы