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

Начиная с R2019b. Построение нескольких графиков замен (R2019a).

В этом примере показано, как построить графики в тех же осях с помощью hold функция, и как создать несколько осей на рисунке, использующем tiledlayout функция.

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

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

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 object. The axes object with title Combine Plots contains 3 objects of type line, scatter.

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

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

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

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

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

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

Figure contains 2 axes objects. Axes object 1 with title Plot 1 contains an object of type line. Axes object 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)
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 objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type scatter. Axes object 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)

% 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 objects. Axes object 1 with title Plot 1 contains an object of type line. Axes object 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);
nexttile
plot(x,y1)
nexttile
plot(x,y2)
nexttile
plot(x,y3)
nexttile
plot(x,y4)

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

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

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

Figure contains 4 axes objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type line. Axes object 3 contains an object of type line. Axes object 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);
ax1 = nexttile;
plot(ax1,x1,y1)
ax2 = nexttile;
stem(ax2,x2,y2)

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

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

Добавьте разделяемый заголовок и совместно использованные подписи по осям путем передачи t к titlexlabel, и 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 objects. Axes object 1 contains an object of type line. Axes object 2 contains an object of type stem.

Смотрите также

Функции

Похожие темы