Управление цветами, стилями линии и маркерами на графиках

Когда вы строите несколько наборов данных вместе в одних и тех же осях, 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 свойство осей. The ColorOrder свойство содержит массив триплетов RGB, где каждый триплет RGB задает цвет. Значение по умолчанию ColorOrder массив содержит семь цветов. Если вы создаете больше объектов, чем цветов, цвета повторяются.

Если объекты plot поддержки стилями линии и маркерами, MATLAB также переходит по списку в LineStyleOrder свойство осей. The 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

Plot containing five lines with two colors and two line styles.

В этой таблице перечислены SeriesIndex, индекс в ColorOrder массив и индекс в LineStyleOrder массив для каждой линии на предыдущем графике.

 SeriesIndexИндексируйте в ColorOrder МассивИндексируйте в LineStyleOrder МассивВнешний вид линии
Первая линия111Красная сплошная линия
Вторая линия221Синяя сплошная линия
Третья линия312Красная штриховая линия
Четвертая линия422Синяя штриховая линия
Пятая линия511Красная сплошная линия

Можно изменить цвета, стили линии и маркеры объектов графика путем изменения ColorOrder или LineStyleOrder свойства осей или путем изменения SeriesIndex свойства объектов графика.

Изменение цветовых схем и стилей линии

Изменение ColorOrder свойство осей изменяет цветовую схему вашего графика. Изменение LineStyleOrder свойство осей изменяет стили линии (и, возможно, маркеры), используемые на графике. Например, отобразите восемь линий в цикле с использованием цветов по умолчанию и стиля линии.

ax = axes;
hold on
for i = 0:7
    plot([i i+2])
end
hold off

Plot containing eight solid lines of with seven colors. The first color is repeated.

Замените 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 = {'-','--'};

Plot containing eight lines with four colors and two line styles.

Изменение индексов в 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

Plot containing two blue sine waves and two orange sine waves.

Чтобы сделать одну пару синусоид более заметной, измените порядок цвета на другой набор цветов.

ax.ColorOrder = [0.8 0.8 0.9; 0.2 0.2 0.8];

Plot containing two light purple sine waves and two dark purple sine waves.

См. также

Функции

Свойства