exponenta event banner

Объединение нескольких графиков

В этом примере показано, как комбинировать графики в одних осях с помощью hold и как создать несколько осей на рисунке с помощью tiledlayout функция. 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.

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

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

Например, создайте два графика и назначьте переменные объекты-оси 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.

См. также

Функции

Связанные темы