В этом примере показано, как объединить графики в тех же осях с помощью 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
Когда состояние удержания включено, новые графики не очищают существующие графики или сбрасывают свойства осей, такие как заголовок или подписи по осям. Графики проходят циклически через цвета и стили линии на основе 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')
Чтобы создать график, охватывающий несколько строк или столбцов, задайте 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)
Измените внешний вид осей путем установки свойств для каждого из объектов осей. Получить объект осей можно по вызову 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')
Можно управлять интервалами между плитками в размещение, задавая 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)
Уменьшите интервалы по периметру размещения и вокруг каждой плитки путем установки Padding
и TileSpacing
свойства для 'compact'
.
t.Padding = 'compact'; t.TileSpacing = 'compact';
Общий заголовок и общие подписи по осям можно отобразить в размещение. Создайте размещение 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');
Добавить общий заголовок и общие подписи по осям путем передачи 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';
hold
| nexttile
| tiledlayout
| title