
MATLAB позволяет одновременно отображать несколько графиков с помощью функций subplot, plot и hold on. Функция subplot(m,n,p) делит окно графика на m строк и n колонок, активируя p-й участок для построения. Такой подход упрощает сравнение данных без необходимости создавать отдельные фигуры.
Для наложения нескольких кривых на одном графике используют hold on, что позволяет добавлять линии к существующему графику. Каждую кривую рекомендуется подписывать через legend и выделять цветом с помощью параметров ‘Color’ или ‘LineStyle’, чтобы визуально различать данные.
Если данные имеют разный масштаб, эффективнее использовать yyaxis для построения двух осей Y на одной оси X. Это позволяет отобразить зависимость разных величин на одном графике без искажения информации. Дополнительно можно объединять subplot и hold on, создавая сложные компоновки из нескольких сравнительных графиков.
Оптимизация графиков в MATLAB также включает настройку сетки (grid on), заголовков (title), подписей осей (xlabel, ylabel) и ограничений (xlim, ylim). Эти элементы делают визуализацию информативной и удобной для анализа больших массивов данных.
Как строить несколько графиков в MATLAB
Для построения нескольких графиков в одном окне MATLAB используется функция `subplot`. Она разделяет фигуру на сетку из m строк и n столбцов, позволяя расположить графики по ячейкам. Синтаксис: `subplot(m, n, k)`, где k – номер текущей ячейки. После вызова `subplot` последующие команды `plot` будут отображать график именно в этой области.
Пример: `subplot(2, 2, 1); plot(x1, y1); subplot(2, 2, 2); plot(x2, y2);` создаст окно с четырьмя графиками, при этом первые два будут размещены в верхнем ряду.
Для одновременного наложения нескольких графиков в одной области используется функция `hold on`. Она сохраняет текущий график и добавляет новые линии: `plot(x1, y1); hold on; plot(x2, y2); hold off;`. Без `hold on` предыдущие линии перезаписываются.
Для точной настройки размеров и расположения графиков применяется функция `tiledlayout`. Она заменяет `subplot`, позволяя гибко управлять отступами и выравниванием: `tiledlayout(2, 2, ‘Padding’, ‘compact’, ‘TileSpacing’, ‘compact’); nexttile; plot(x1, y1); nexttile; plot(x2, y2);`.
При работе с несколькими графиками важно задавать отдельные оси и подписи для каждого графика: `xlabel`, `ylabel`, `title`. Для легенды используйте `legend`, указав соответствующие метки для каждой линии. Это обеспечивает читаемость и корректное отображение данных.
Если требуется экспорт нескольких графиков, используйте `saveas` или `exportgraphics`, указывая конкретное окно или фигуру. Для автоматизации построения нескольких графиков с разными наборами данных удобно применять циклы, создавая новые подграфики через `subplot` или `nexttile` внутри цикла.
Использование команды subplot для компоновки нескольких графиков
Команда subplot в MATLAB позволяет размещать несколько графиков в одной фигуре, разбивая окно на сетку из строк и столбцов. Формат вызова: subplot(m,n,p), где m – количество строк, n – количество столбцов, p – индекс текущего графика, нумерация слева направо и сверху вниз.
Для создания четырех графиков в сетке 2×2 используется последовательность вызовов: subplot(2,2,1), subplot(2,2,2), subplot(2,2,3), subplot(2,2,4), после чего каждая команда plot или bar рисует график в соответствующей ячейке.
Можно менять размер отдельных графиков, объединяя ячейки с помощью двух аргументов в виде диапазона: subplot(2,2,[1 3]) создаст график, занимающий левую колонку сетки 2×2. Это полезно для выделения важного графика среди нескольких.
При использовании subplot рекомендуется заранее определить сетку в зависимости от количества графиков. Для динамических данных удобно применять циклы: внутри цикла индекс p вычисляется как i или mod(i-1,m*n)+1, что позволяет автоматически размещать графики по порядку.
Команда subplot сохраняет текущие оси активными. Для настройки каждой ячейки можно использовать title, xlim, ylim и grid on сразу после вызова subplot, чтобы параметры применялись только к выбранной ячейке.
При необходимости обновления данных графиков без создания новых окон можно применять cla после subplot, что очищает выбранные оси, сохраняя компоновку сетки.
Для оптимизации визуального восприятия рекомендуется выбирать сетку с минимально необходимым числом ячеек. Если графиков много, удобнее использовать более крупные фигуры и уменьшать шрифт заголовков и осей через свойства FontSize.
Создание нескольких окон графиков с помощью figure

В MATLAB для отображения нескольких графиков в отдельных окнах используется функция figure. Каждое вызванное окно получает уникальный идентификатор, что позволяет управлять его содержимым независимо от других графиков.
Простейший пример:
figure(1);
plot(x1, y1);
title('График 1');
figure(2);
plot(x2, y2);
title('График 2');
Рекомендации по работе с несколькими окнами:
- Используйте явные номера окна:
figure(1),figure(2), чтобы предотвратить случайное перезаписывание графиков. - Функция
clfочищает текущее окно, сохраняя его номер:figure(1); clf; - Для автоматического создания нового окна без указания номера используйте
figureбез аргументов. MATLAB присвоит следующий доступный номер. - Сохраняйте ссылки на фигуры:
f1 = figure;позволяет далее обращаться к окну черезf1, например,figure(f1); plot(...); - Для организации нескольких графиков в отдельных окнах удобно использовать циклы:
for k = 1:3
figure(k);
plot(x, y(:,k));
title(['График ', num2str(k)]);
end
Дополнительно можно настроить размеры и положение окна с помощью свойства Position:
f = figure;
f.Position = [100, 100, 600, 400];
Эта практика позволяет создавать наглядные и независимые визуализации, упрощает сравнение данных и предотвращает наложение графиков в одном окне.
Наложение графиков на одной оси с hold on
В MATLAB для наложения нескольких графиков на одной оси используется команда hold on. Она сохраняет текущую ось и добавляет новые линии без очистки предыдущих.
Пример построения двух функций на одной оси:
x = 0:0.1:10;
y1 = sin(x);
y2 = cos(x);
plot(x, y1, 'r', 'LineWidth', 2);
hold on;
plot(x, y2, 'b--', 'LineWidth', 1.5);
hold off;
Таблица основных опций для plot при наложении:
| Параметр | Описание | Пример |
|---|---|---|
| Цвет линии | Определяет цвет графика | ‘r’, ‘b’, ‘g’ |
| Тип линии | Сплошная, пунктирная, точечная | ‘-‘, ‘—‘, ‘:’ |
| Ширина линии | Толщина линии в пунктах | 2, 1.5 |
| Маркер | Отмечает точки данных | ‘o’, ‘*’, ‘s’ |
Рекомендации при использовании hold on:
- Всегда использовать
hold offпосле завершения добавления графиков для предотвращения непреднамеренного наложения новых данных. - Сочетать разные цвета и типы линий для наглядного различия функций.
- Можно комбинировать с
legendдля идентификации каждой линии. - При наложении большого числа графиков использовать массив цветов или циклы для автоматизации.
Для динамических обновлений графиков hold on позволяет добавлять линии по мере вычисления данных без очистки предыдущих построений.
Сравнение данных через plot и plotyy на разных осях

Функция plot в MATLAB строит несколько кривых на одной паре осей. Например, команды plot(x, y1, ‘-r’, x, y2, ‘—b’) отображают две зависимые переменные y1 и y2 относительно одной оси X. Это удобно при близких диапазонах значений y, так как линии легко сопоставляются визуально.
Если диапазоны y существенно различаются, использование plotyy обеспечивает два независимых масштаба по оси Y. Пример: [ax, h1, h2] = plotyy(x, y1, x, y2) создает левую и правую оси Y для y1 и y2 соответственно. Это предотвращает искажение одной кривой из-за слишком большой разницы в величинах.
При сравнении температурного графика (0–100 °C) и расхода тока (0–50 A) plotyy позволяет установить левую ось Y для температуры и правую ось Y для тока. В plot такие данные на одной оси выглядели бы почти плоскими, теряя информативность.
Для визуальной ясности рекомендуется: для plot использовать различающиеся линии и маркеры, plot(x, y1, ‘-o’, x, y2, ‘:s’); для plotyy назначать цвета, отличающиеся от фона осей, и подписи ylabel для каждой оси. Также полезно синхронизировать ось X через linkaxes([ax(1), ax(2)], ‘x’), чтобы прокрутка или масштабирование одной оси автоматически обновляло другую.
Использование plot предпочтительно при близких диапазонах данных и простой визуализации, plotyy – при резких различиях диапазонов и необходимости точного сравнения амплитуд. Комбинация обеих стратегий позволяет создавать информативные графики без искажения информации.
Сохранение нескольких графиков в один файл изображения

Для сохранения нескольких графиков в одном файле MATLAB использует объекты Figure и функцию exportgraphics или saveas. Создайте отдельные фигуры через figure(1), figure(2) и постройте графики в каждой. Для объединения используйте subplot: subplot(2,2,1) – первый график, subplot(2,2,2) – второй и так далее. Это позволяет управлять расположением графиков в одной фигуре перед сохранением.
После построения всех графиков вызовите exportgraphics(gcf,'имя_файла.png','Resolution',300) для сохранения текущей фигуры с повышенным разрешением. Параметр Resolution рекомендуется выставлять от 300 до 600 dpi для печати и публикаций.
Если графики созданы в разных фигурах, их можно объединить в одну, скопировав оси: ax1 = figure1.CurrentAxes; ax2 = figure2.CurrentAxes; copyobj(ax1,gcf); copyobj(ax2,gcf). После размещения осей используйте exportgraphics или saveas. Такой подход сохраняет масштабирование, подписи и легенды каждого графика без их повторного построения.
Для форматов векторной графики применяйте 'pdf' или 'eps' в exportgraphics, что позволяет сохранить высокое качество линий и текста при масштабировании. Важно учитывать размеры фигуры: set(gcf,'Position',[100 100 1200 800]) устанавливает оптимальное соотношение сторон для нескольких графиков.
Автоматизация сохранения нескольких фигур в один файл возможна через цикл: создайте массив фигур figs = [figure1, figure2, figure3], скопируйте оси в новую фигуру и вызовите exportgraphics один раз. Это сокращает ручную работу при генерации отчетов с большим количеством графиков.
Изменение масштабов и подписей осей для отдельных графиков
Для управления масштабами и подписями осей в MATLAB при работе с несколькими графиками используют отдельные оси через команду axes или функцию subplot. Каждая ось хранит собственные параметры, что позволяет индивидуально настраивать графики.
Пример с subplot:
x = 0:0.1:10;
y1 = sin(x);
y2 = exp(-0.1*x).*sin(x);
subplot(2,1,1);
plot(x,y1);
xlabel('Время, с');
ylabel('Амплитуда');
xlim([0 10]);
ylim([-1 1]);
subplot(2,1,2);
plot(x,y2);
xlabel('Время, с');
ylabel('Затухание');
xlim([2 8]);
ylim([-0.5 0.5]);
При использовании axes для точного позиционирования:
ax1 = axes('Position',[0.1 0.55 0.8 0.4]);
plot(ax1,x,y1);
xlabel(ax1,'Время, с');
ylabel(ax1,'Амплитуда');
xlim(ax1,[0 10]);
ylim(ax1,[-1 1]);
ax2 = axes('Position',[0.1 0.05 0.8 0.4]);
plot(ax2,x,y2);
xlabel(ax2,'Время, с');
ylabel(ax2,'Затухание');
xlim(ax2,[2 8]);
ylim(ax2,[-0.5 0.5]);
Для автоматической настройки диапазонов осей применяют команды axis tight или axis([xmin xmax ymin ymax]). Подписи осей можно форматировать с помощью fontsize и fontweight:
xlabel(ax1,'Время, с','FontSize',12,'FontWeight','bold');
ylabel(ax1,'Амплитуда','FontSize',12,'FontWeight','bold');
Для многосерийных графиков с разными масштабами удобно использовать yyaxis left и yyaxis right, что позволяет задать отдельные подписи и диапазоны для каждой оси Y без изменения общей оси X.
- Использовать
subplotдля упрощенного размещения нескольких графиков. - Применять
axesдля точного позиционирования и независимой настройки. - Настраивать
xlimиylimдля каждого графика отдельно. - Форматировать подписи осей через
FontSizeиFontWeight. - Для двух осей Y на одном графике использовать
yyaxis.
Такая структура позволяет управлять масштабами и подписями независимо, обеспечивая точное отображение данных на каждом графике.
Настройка легенд и цветов для каждого графика отдельно

Для управления цветами отдельных графиков в MATLAB используйте свойство `’Color’` при построении, например:
plot(x, y1, 'Color', [0.2 0.6 0.8]). Значения RGB задаются в диапазоне от 0 до 1. Для нескольких линий можно назначить массив цветов:
colors = [0 0.5 0; 0.8 0.2 0.2; 0.1 0.1 0.9]; и применять их по индексу к каждой линии.
Легенду создают через команду legend, указывая текст для каждой линии в порядке их построения:
legend({'Линия 1','Линия 2','Линия 3'}). Для отдельного графика можно использовать объектную форму:
h = plot(x, y); legend(h, 'Описание'), что позволяет привязать легенду именно к выбранной линии.
Если графики находятся на отдельных осях (`axes`), каждая ось может иметь свою легенду и цвета. Пример:
ax1 = axes; plot(ax1, x, y1, 'r'); legend(ax1, 'График 1');
ax2 = axes; plot(ax2, x, y2, 'b'); legend(ax2, 'График 2');. Такой подход предотвращает перекрытие легенд при использовании `hold on`.
Для линейных и точечных графиков можно комбинировать цвет, маркер и стиль линии:
plot(x, y, 'o--', 'Color', [0.5 0 0.7]). Это позволяет визуально различать графики без изменения общей палитры.
Использование функции `set` дает гибкость:
h = plot(x, y); set(h, 'Color', [0 0.7 0], 'LineWidth', 2);. Аналогично можно изменить свойства легенды:
lgd = legend(h, 'График A'); set(lgd, 'FontSize', 12, 'TextColor', [0.1 0.1 0.1]);.
Для нескольких графиков на одном окне рекомендуется задавать цвета через матрицу и циклы, чтобы исключить дублирование:
for k = 1:3, plot(x, y(:,k), 'Color', colors(k,:)); hold on; end. Легенду при этом формируют после цикла, сохраняя точное соответствие линий и подписей.
Вопрос-ответ:
Как построить несколько графиков в одном окне MATLAB с помощью команды plot?
Для отображения нескольких графиков на одной координатной сетке можно использовать команду plot с несколькими парами аргументов. Например, plot(x1, y1, x2, y2) построит два графика: первый по x1 и y1, второй по x2 и y2. Также можно задавать разные стили линий и цвета для каждого графика, добавляя строки формата, такие как ‘-r’ для красной линии или ‘—b’ для синей пунктирной.
Как разместить несколько графиков в разных подграфиках одного окна?
Для создания нескольких подграфиков используется функция subplot(m, n, p), где m — количество строк, n — количество столбцов, а p — номер текущего подграфика. После вызова subplot можно строить графики с помощью plot или других функций. Это позволяет визуально сравнивать разные наборы данных в одном окне, сохраняя отдельные оси и масштаб для каждого графика.
Можно ли обновлять графики в MATLAB без закрытия окна?
Да, можно. Для этого используют команды hold on и hold off. hold on позволяет добавлять новые линии к существующему графику без удаления предыдущих данных. После завершения построения всех графиков вызывают hold off, чтобы последующие графики не добавлялись к текущему. Такой подход удобен для постепенного отображения нескольких серий данных.
Как настроить разные оси для каждого графика в одном окне?
Если требуется, чтобы графики имели разные оси, можно использовать subplot для раздельных координатных сеток или функцию axes для создания отдельных осей внутри окна. axes задаёт положение осей в нормализованных единицах, после чего можно строить график на этих координатах независимо от других. Это позволяет гибко управлять масштабом и положением каждого графика.
Можно ли строить несколько графиков и сохранять их в один файл изображения?
Да, MATLAB позволяет сохранять окно с несколькими графиками с помощью команды saveas или exportgraphics. После построения всех графиков можно вызвать saveas(gcf, ‘filename.png’) для сохранения текущей фигуры в файл PNG или другой поддерживаемый формат. Это сохраняет все графики, включая подграфики и легенды, в одном изображении.
Как построить несколько графиков на одном рисунке в MATLAB?
В MATLAB можно отображать несколько графиков на одной области с помощью функции hold on. Сначала создается первый график с помощью команды plot, затем вызывается hold on, после чего строятся следующие графики. Каждый график может иметь собственный цвет и стиль линии, что помогает различать их визуально. После добавления всех графиков можно использовать legend для подписей и grid on для сетки.
Как разместить несколько графиков в разных подграфиках на одной фигуре?
Для размещения нескольких графиков на одной фигуре в отдельных областях используется функция subplot. Она позволяет разбить окно рисунка на сетку заданного числа строк и столбцов. Например, команда subplot(2,2,1) создаст первый подграфик в сетке 2 на 2, subplot(2,2,2) — второй, и так далее. После этого для каждого подграфика можно строить свои линии или точки. Такой способ удобен для сравнения разных наборов данных на одной фигуре без наложения графиков друг на друга.
