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