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

Когда вы строите несколько наборов данных вместе в тех же осях, 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рассеяние, и 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

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.

Смотрите также

Функции

Свойства