При печати нескольких наборов данных в одной и той же оси MATLAB ® автоматически назначает различные цвета (и, возможно, стили линий и маркеры) объектам печати. При вызове функций печати можно настроить цвета, стили линий и маркеры.
Например, этот код отображает сплошную красную линию и пунктирную зеленую линию с круглыми маркерами.
plot([0 1 2],'-r') hold on plot([2 1 0],'--og') hold off
Можно также изменить цвет, стиль линий и маркер, задав свойства объекта после его создания. Например, этот код создает линию, а затем изменяет ее на зеленую пунктирную линию с круговыми маркерами.
p = plot([0 1 2]); p.Color = 'g'; p.LineStyle = '--'; p.Marker = 'o';
Эти методы полезны для настройки нескольких строк. Однако они менее гибки в других ситуациях, таких как печать данных в цикле или передача матричных данных в функции печати. В таких случаях можно изменить свойства, управляющие автоматическим назначением MATLAB цветов, стилей линий и маркеров.
Примечание
Некоторые функциональные возможности в следующих примерах доступны начиная с R2019b, а некоторые функциональные возможности доступны начиная с R2020a. Сведения об изменении цветов печати и стилей линий в более ранней версии см. в разделе Почему линии печати имеют разные цвета? и стили линий, используемые для печати - LineStyleOrder.
MATLAB назначает цвета объектам печати (например, Line, Scatter, и Bar объектов) циклическим перебором цветов, перечисленных в ColorOrder свойства осей. ColorOrder содержит массив триплетов RGB, где каждый триплет RGB определяет цвет. Дефолт ColorOrder массив содержит семь цветов. Если создается больше объектов, чем цветов, цвета повторяются.
Если объекты печати поддерживают стили линий и маркеры, MATLAB также циклически просматривает список в LineStyleOrder свойства осей. LineStyleOrder свойство содержит массив ячеек последовательностей символов, где каждая последовательность символов соответствует стилю строки (или стилю строки, объединенному с маркером). Дефолт LineStyleOrder массив содержит только стиль сплошной линии, ('-'). Все цвета в ColorOrder используются с одной последовательностью символов в LineStyleOrder массив перед использованием следующей последовательности. Цикл продолжается для каждого нового объекта печати. Если объектов больше, чем комбинаций цветов и последовательностей символов, цикл повторяется.
Для данной пары ColorOrder и LineStyleOrder массивы, цвета, стили линий и маркеры для конкретного объекта печати определяются значением SeriesIndex, которое является новым свойством, начиная с R2020a. По умолчанию SeriesIndex свойство - это число, соответствующее порядку создания объекта, начиная с 1. MATLAB использует число для вычисления индексов в ColorOrder и LineStyleOrder массивы.
Например, создайте объект-ось с двумя цветами ColorOrder массив (красный и синий) и два стиля линий в нем LineStyleOrder массив (сплошной и штриховой). Затем постройте график из пяти строк.
ax = axes;
ax.ColorOrder = [1 0 0; 0 0 1];
ax.LineStyleOrder = {'-','--'};
hold on
for i = 1:5
plot([i i+2])
end
hold off
В этой таблице перечислены SeriesIndex, индекс в ColorOrder массив и индекс в LineStyleOrder массив для каждой строки на предыдущем графике.
SeriesIndex | Проиндексировать в ColorOrder Множество | Проиндексировать в LineStyleOrder Множество | Внешний вид линии | |
|---|---|---|---|---|
| Первая строка | 1 | 1 | 1 | Красная сплошная линия |
| Вторая линия | 2 | 2 | 1 | Синяя сплошная линия |
| Третья линия | 3 | 1 | 2 | Красная пунктирная линия |
| Четвёртая линия | 4 | 2 | 2 | Синяя пунктирная линия |
| Пятая линия | 5 | 1 | 1 | Красная сплошная линия |
Можно изменить цвета, стили линий и маркеры объектов печати, изменив ColorOrder или LineStyleOrder свойства осей или путем изменения SeriesIndex свойства объектов печати.
Изменение ColorOrder свойство осей изменяет цветовую схему графика. Изменение LineStyleOrder свойство осей изменяет стили линий (и, возможно, маркеры), используемые при печати. Например, напечатайте восемь линий в цикле с использованием цветов и стиля линий по умолчанию.
ax = axes; hold on for i = 0:7 plot([i i+2]) end hold off

Замените ColorOrder с новым массивом, содержащим четыре цвета (можно также заменить этот массив с помощью colororder функция). Затем замените LineStyleOrder с новым массивом ячеек, содержащим два стиля линий. Линии автоматически используют новые цвета и стили линий.
% Updates existing plots in R2019b or later ax.ColorOrder = [1 0 0; 0 1 0; 0 0 1; 0 0 0]; ax.LineStyleOrder = {'-','--'};

ColorOrder и LineStyleOrder МножестваИзменение SeriesIndex свойство объекта печати изменяет индексы в ColorOrder и LineStyleOrder массивы. Изменение индексов полезно в том случае, если цвет, стиль линий и маркер объекта должны соответствовать другому объекту.
Например, постройте график четырех синусоидальных волн в петле, варьируя длину волны и фазу. Для каждой синусоидальной волны установите значение SeriesIndex свойство в соответствии с длиной волны. На полученном графике синусоидальные волны, имеющие одинаковую длину волны, также имеют одинаковый цвет.
x = linspace(0,10,200); ax = axes; hold on for phi = 0:3:3 for t = 1:2 plot(x,sin(x/t + phi),'SeriesIndex',t) % Requires R2020a or later end end hold off

Чтобы сделать одну пару синусоидальных волн более заметной, измените порядок цветов на другой набор цветов.
ax.ColorOrder = [0.8 0.8 0.9; 0.2 0.2 0.8];

colororder | gca | plot