Построение 2D-графиков: plot

Одна из главных причин любить MATLAB — насколько просто превратить вектор чисел в график.

Команда plot(x, y) рисует линию по точкам, заданным векторами абсцисс x и ординат y.

График за две строки

Типичный сценарий: задать ось абсцисс через linspace, вычислить функцию векторно, нарисовать. Никаких циклов — вектор точек идёт в plot целиком.

x = linspace(0, 2*pi, 100);
y = sin(x);
plot(x, y);
xlabel('x'); ylabel('sin(x)');
title('График синуса');
grid on;

Здесь x — сто точек от 0 до 2π, y = sin(x) считается сразу для всех точек, а plot соединяет их линией. Команды xlabel, ylabel, title, grid on оформляют картинку.

Стиль линий и цвет

Третий аргумент plot — строка стиля: цвет, тип линии, маркер. Например, 'r--' — красная пунктирная, 'bo' — синие кружки без линии, 'g-' — зелёная сплошная.

plot(x, y, 'r--');      % красная пунктирная линия
plot(x, y, 'bo');       % синие точки-кружки
СимволЗначение
r g b kцвета: красный, зелёный, синий, чёрный
- -- :сплошная, пунктир, точки
o * .маркеры точек

Несколько кривых: hold on

По умолчанию каждый новый plot стирает предыдущий. Чтобы наложить кривые на одни оси, между вызовами ставят hold on. Легенда legend подписывает кривые.

x = linspace(0, 2*pi, 100);
plot(x, sin(x), 'b-');
hold on;
plot(x, cos(x), 'r--');
legend('sin', 'cos');
hold off;

Как работает под капотом

MATLAB-графика устроена иерархически: есть фигура (окно), внутри — оси (axes), внутри — графические объекты (линии, маркеры). Каждый из них имеет свойства (цвет, толщину, метки), которые можно менять и после построения через дескриптор объекта: h = plot(...), затем set(h, 'LineWidth', 2). Понимание этой иерархии «фигура → оси → объект» — ключ к тонкой настройке любого графика и к программному оформлению рисунков для статей.

Подписи, шрифты и подготовка к публикации

График для себя и график для статьи или отчёта — разные вещи. Для публикации важны читаемые подписи осей с единицами измерения, заголовок, легенда, достаточный размер шрифта и толщина линий. Всё это задаётся свойствами: xlabel('Время, с'), set(gca, 'FontSize', 12) меняет шрифт текущих осей, аргумент 'LineWidth', 1.5 в plot утолщает линию. MATLAB традиционно ценят именно за то, что доведённый таким образом график выглядит профессионально и идёт прямо в научную работу. Потратить минуту на оформление осей стоит всегда: безымянные оси превращают самый точный расчёт в нечитаемую картинку, по которой невозможно понять, что и в каких единицах изображено.

Частые ошибки

  • Несовпадение длин x и yplot выдаст ошибку размерности.
  • Забыть hold on и удивляться, что осталась только последняя кривая.
  • Рисовать функцию по слишком малому числу точек — линия выйдет ломаной, а не гладкой.

Графика как инструмент мышления, а не только отчёта

Лёгкость построения графиков в MATLAB меняет сам способ работы с данными. Когда нарисовать кривую стоит двух строк, вы рисуете постоянно — не только для финального отчёта, но и чтобы понять данные по ходу анализа. Увидели странный результат расчёта? Постройте промежуточную величину и посмотрите на её форму. Это называется разведочной визуализацией, и она часто выявляет ошибку быстрее любой отладки: глаз мгновенно замечает выброс, разрыв или неожиданный масштаб, которые в столбце чисел остались бы незамеченными. Привыкайте рисовать рано и часто — график дешевле размышлений над таблицей.

Другие виды графиков

Линейный plot — лишь начало. Для разных данных есть свои представления: scatter — облако точек без линий (для корреляций), bar — столбчатая диаграмма (для категорий), histogram — распределение значений, errorbar — точки с погрешностями, stem — отсчёты дискретного сигнала. Выбор правильного типа графика — половина дела: гистограмма покажет распределение, которое линия скрыла бы, а scatter обнажит зависимость, незаметную в таблице. Все они подчиняются той же логике оформления (xlabel, title, legend) и той же иерархии «фигура — оси — объект», так что, освоив plot, вы освоили и остальные.

Итоги

  • plot(x, y) рисует линию; ось задают linspace, функцию считают векторно.
  • Строка стиля ('r--') задаёт цвет, линию и маркеры; оформление — xlabel/title/grid.
  • hold on накладывает кривые, legend их подписывает.
Проверьте себя
1. Что рисует plot(x, y)?
AГистограмму
BЛинию по точкам (x, y)
CМатрицу
DТекст
2. Зачем нужна команда hold on?
AПоставить график на паузу
BНаложить несколько кривых на одни оси
CСохранить рисунок
DОчистить фигуру
3. Что задаёт третий аргумент 'r--' в plot(x, y, 'r--')?
AРазмер окна
BЦвет и стиль линии (красная пунктирная)
CЧисло точек
DЗаголовок