Построение 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иy—plotвыдаст ошибку размерности. - Забыть
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их подписывает.