Содержание статьи

Цвет графика в MATLAB задаётся через свойства графических объектов, которые создаются функциями plot, scatter, bar, surf и другими. Неправильно выбранные цвета приводят к потере читаемости при анализе данных, особенно при наложении нескольких кривых или при подготовке рисунков для отчётов и публикаций. MATLAB предоставляет несколько параллельных механизмов управления цветом: символьные коды, RGB-векторы, свойства объектов и цветовые карты.
При построении линейных графиков цвет можно задать непосредственно в момент вызова функции, указав параметр ‘Color’ или короткий символьный код. Для точной настройки используются RGB-векторы в диапазоне от 0 до 1, что позволяет воспроизводить корпоративные палитры или согласовывать оформление с другими программами визуализации. Такой подход особенно полезен при автоматической генерации большого количества графиков в скриптах.
Если график уже построен, MATLAB позволяет изменить цвет без повторного вызова функции построения. Для этого используются дескрипторы объектов и функция set, либо точечный доступ к свойствам через структуру графического объекта. Этот метод применяется при интерактивной работе, когда внешний вид графика корректируется после анализа данных.
Отдельного внимания требуют графики с цветовым заполнением: поверхности, тепловые карты и изображения. Здесь ключевую роль играют цветовые карты (colormap), а также параметры масштабирования значений. Правильная настройка палитры напрямую влияет на интерпретацию распределений и градиентов, особенно при визуализации матриц, результатов моделирования и численных экспериментов.
Задание цвета линии при построении графика с помощью plot
Функция plot позволяет задать цвет линии непосредственно в момент построения графика, что упрощает контроль визуального результата без последующего обращения к свойствам объекта. MATLAB обрабатывает параметры в порядке их передачи, поэтому цвет следует указывать явно, чтобы избежать автоматического выбора из стандартного цветового цикла.
На практике используются три основных способа задания цвета линии:
- короткий символьный код цвета;
- параметр ‘Color’ с RGB-вектором;
- комбинация цвета с типом линии и маркерами.
Символьные коды удобны для быстрых построений и включают фиксированный набор цветов. Например:
plot(x, y, 'r')
В этом случае линия будет окрашена в красный цвет. MATLAB поддерживает следующие коды:
- ‘r’ – красный
- ‘g’ – зелёный
- ‘b’ – синий
- ‘c’ – голубой
- ‘m’ – пурпурный
- ‘y’ – жёлтый
- ‘k’ – чёрный
Для более точного управления цветом используется параметр ‘Color’ с RGB-вектором, где каждое значение задаётся в диапазоне от 0 до 1:
plot(x, y, 'Color', [0.2 0.6 0.8])
Этот подход применяется, когда требуется воспроизвести конкретный оттенок или согласовать оформление графиков между несколькими проектами.
Цвет можно задавать одновременно с типом линии и маркерами в одной строке спецификации:
plot(x, y, 'g--o')
Здесь зелёный цвет сочетается с пунктирной линией и круглыми маркерами. Такой формат компактен, но ограничен набором стандартных цветов и стилей, поэтому для сложных визуализаций предпочтительнее использовать именованные параметры.
Использование RGB-векторов для точной настройки цвета
RGB-векторы в MATLAB задают цвет как массив из трёх чисел вида [R G B], где каждое значение определяет долю красного, зелёного и синего компонентов. Диапазон значений ограничен интервалом от 0 до 1, что позволяет описывать как базовые, так и сложные оттенки без привязки к фиксированному набору цветов.
При построении графиков RGB-вектор передаётся через параметр ‘Color’. Например, насыщенный тёмно-синий оттенок можно задать как [0.1 0.2 0.7]. Такой способ удобен при визуализации данных, где требуется визуально различать близкие по форме кривые или подчеркнуть конкретный ряд.
RGB-векторы применимы не только к линиям, но и к маркерам, областям заливки и поверхностям. Свойства ‘MarkerFaceColor’, ‘MarkerEdgeColor’ и ‘FaceColor’ принимают тот же формат, что упрощает унификацию цветовой схемы внутри одного графика или между несколькими окнами.
Для воспроизведения корпоративных или публикационных цветов часто используется перевод значений из диапазона 0–255 в формат MATLAB путём деления каждого канала на 255. Например, цвет RGB(34, 139, 230) преобразуется в вектор [34 139 230] / 255. Такой приём позволяет напрямую использовать палитры из графических редакторов.
При работе с несколькими линиями рекомендуется заранее сформировать массив RGB-векторов и передавать их последовательно. Это снижает зависимость от стандартного цветового цикла и даёт контроль над визуальным порядком кривых независимо от версии MATLAB и пользовательских настроек.
Применение коротких цветовых кодов MATLAB
Короткие цветовые коды MATLAB используются в строке спецификации функции plot и задают цвет линии одним символом. Такой формат применяется при быстром построении графиков, когда не требуется точная настройка оттенков. Коды интерпретируются MATLAB до обработки остальных параметров и имеют приоритет над стандартным цветовым циклом.
Набор поддерживаемых кодов ограничен и жёстко зафиксирован. Он одинаков для большинства функций двумерной графики:
| Код | Цвет |
|---|---|
| r | Красный |
| g | Зелёный |
| b | Синий |
| c | Голубой |
| m | Пурпурный |
| y | Жёлтый |
| k | Чёрный |
Цветовой код может комбинироваться с типом линии и маркерами в одной строке. Например, запись ‘b—x’ задаёт синюю пунктирную линию с крестовыми маркерами. Порядок символов не фиксирован, но все элементы должны быть указаны в пределах одной строки.
Короткие коды применимы только к основному цвету линии и не позволяют управлять оттенками маркеров или заливки. При необходимости раздельной настройки следует использовать именованные параметры ‘Color’, ‘MarkerFaceColor’ и ‘MarkerEdgeColor’. Коды удобны для прототипирования, но плохо масштабируются при построении графиков с большим числом кривых.
Изменение цвета уже построенного графика через свойства объекта
Наиболее распространённый способ – сохранить дескриптор при построении графика и изменить его свойство Color. Значение задаётся в формате RGB-вектора. Такой подход позволяет точно управлять оттенком независимо от исходных параметров построения.
Если график уже создан и дескриптор не был сохранён, его можно получить через текущие оси с помощью функции gca и свойства Children. Это особенно полезно при работе с готовыми фигурами или при автоматической обработке большого количества графиков.
Свойство Color поддерживает как RGB-векторы, так и символьные коды. Однако при изменении существующего объекта предпочтительнее использовать RGB-формат, так как он не зависит от глобальных настроек цветового цикла и обеспечивает предсказуемый результат.
Изменение цвета через свойства объекта применяется не только к линиям, но и к маркерам, областям заливки и поверхностям. Для этого используются свойства MarkerFaceColor, MarkerEdgeColor и FaceColor, что позволяет детально корректировать внешний вид графика без перестроения данных.
Настройка цветов маркеров и их границ

Маркеры в MATLAB настраиваются отдельно от линий, что позволяет выделять отдельные точки данных без изменения цвета кривой. За заливку маркера отвечает свойство MarkerFaceColor, а за его границу – MarkerEdgeColor. Оба свойства принимают символьные коды или RGB-векторы.
При построении графика параметры маркеров можно задать напрямую в функции plot. Это удобно, когда требуется сразу визуально разделить точки и линии, например при отображении дискретных измерений поверх аппроксимирующей кривой.
Цвет границы маркера по умолчанию совпадает с цветом линии. Для его изменения используется явное указание MarkerEdgeColor, что полезно при светлой заливке маркера, когда стандартная граница становится плохо различимой на фоне осей.
Для маркеров без заливки рекомендуется использовать контрастный цвет границы, чтобы точки не терялись при плотном расположении данных. В случаях, когда маркеры перекрываются, заливка с частичной прозрачностью задаётся через дополнительное свойство MarkerFaceAlpha.
При работе с несколькими наборами данных следует избегать совпадения цветов маркеров и линий разных серий. Раздельная настройка заливки и границы маркеров позволяет сохранить читаемость графика даже при большом количестве точек.
Управление цветами нескольких линий на одном графике
При построении нескольких линий на одном графике MATLAB по умолчанию использует встроенный цветовой цикл осей. Каждая новая линия получает следующий цвет из массива ColorOrder, связанного с текущими осями. Этот механизм удобен для быстрых построений, но не даёт контроля над конкретными оттенками.
Для явного управления цветами рекомендуется задавать цвет каждой линии вручную при вызове plot или сохранять дескрипторы линий и изменять их свойства после построения. Такой подход исключает зависимость от порядка построения и пользовательских настроек среды.
Цветовой цикл можно переопределить, задав собственный массив RGB-векторов в свойстве ColorOrder. Это позволяет стандартизировать оформление графиков и использовать одну и ту же палитру при построении разных наборов данных.
При добавлении линий в существующие оси с помощью hold on MATLAB продолжает использовать текущий ColorOrder. Если требуется повторное использование палитры с начала, необходимо сбросить индекс цветового цикла через свойство ColorOrderIndex.
Для графиков с большим числом линий рекомендуется сочетать цвета с разными типами линий и маркеров. Это снижает визуальную перегрузку и облегчает интерпретацию данных без необходимости использовать близкие по оттенку цвета.
Изменение цветовой схемы осей и сетки

Цвета осей и сетки в MATLAB настраиваются через свойства объекта осей, доступного с помощью gca. Эти параметры напрямую влияют на читаемость графика при плотных данных и при использовании светлых или тёмных линий.
Основные элементы осей, для которых можно задать цвет:
- линии осей координат;
- подписи делений;
- рамка области построения;
- основная и вспомогательная сетка.
Цвет осей координат и подписей управляется через свойство XColor, YColor и ZColor. Задание нейтральных оттенков снижает визуальный конфликт с цветами линий, особенно при многоцветных графиках.
Для настройки сетки используются свойства GridColor и MinorGridColor. Рекомендуется выбирать светлые RGB-значения, чтобы сетка выполняла ориентирующую функцию и не перетягивала внимание на себя.
Последовательность настройки сетки обычно включает:
- включение основной сетки через grid on;
- включение вспомогательной сетки при необходимости;
- задание цвета и прозрачности сеточных линий.
Настройка цветовых карт для графиков типа surf и imagesc
Графики surf и imagesc используют цветовые карты для отображения числовых значений через градиент оттенков. Цвет поверхности или изображения определяется не напрямую, а через соответствие значений матрицы индексам цветовой карты, заданной для текущей фигуры или осей.
Выбор цветовой карты осуществляется с помощью функции colormap. MATLAB предоставляет набор встроенных палитр, таких как parula, jet, hot и gray. Для численных данных предпочтительно использовать карты с монотонным изменением яркости, чтобы избежать искажения визуального восприятия диапазонов.
Диапазон значений, сопоставляемых цветовой карте, контролируется функцией caxis. Явное задание минимального и максимального значений исключает автоматическое растяжение шкалы и позволяет корректно сравнивать несколько графиков между собой.
Для интерпретации цветов используется цветовая шкала, добавляемая командой colorbar. Её оформление наследует текущую цветовую карту, поэтому любые изменения палитры автоматически отражаются на шкале значений.
При необходимости точного контроля над цветами можно задать пользовательскую цветовую карту в виде массива RGB-векторов. Этот подход применяется при визуализации категориальных данных или при строгих требованиях к цветовым переходам, например в научных иллюстрациях и отчётах моделирования.
Вопрос-ответ:
Почему цвета линий на одном и том же графике иногда меняются при повторном запуске скрипта?
MATLAB присваивает цвета линиям последовательно из свойства ColorOrder текущих осей. Если порядок построения линий меняется, используются другие цвета из палитры. Также на результат влияет наличие команд hold on и очистка осей. Чтобы исключить зависимость от порядка построения, цвет каждой линии следует задавать явно через параметр Color или через дескриптор графического объекта.
Можно ли задать одинаковый цвет линии и маркеров, но с разной яркостью?
Да, для этого используется один и тот же RGB-вектор с разными значениями яркости. Цвет линии задаётся через свойство Color, а цвет заливки маркера — через MarkerFaceColor. Например, для маркеров можно увеличить все компоненты RGB на фиксированную величину, не выходя за диапазон от 0 до 1, сохранив визуальную связь между элементами.
Как изменить цвет сетки, не затрагивая цвет осей и подписей?
Цвет сетки настраивается отдельно через свойства GridColor и MinorGridColor объекта осей. Свойства XColor, YColor и ZColor при этом не затрагиваются. Такой подход удобен, когда требуется оставить оси нейтральными, а сетку сделать менее заметной или, наоборот, более контрастной.
Почему после изменения colormap график surf выглядит иначе, чем ожидалось?
Цвет поверхности определяется не только выбранной цветовой картой, но и диапазоном значений, сопоставляемых этой карте. Если диапазон не задан явно, MATLAB масштабирует его автоматически по данным, что может смещать цветовые переходы. Для предсказуемого результата следует задать границы с помощью caxis и использовать одну и ту же цветовую карту при сравнении нескольких поверхностей.
