Я не вижу способа сделать это прямо из коробки. Простой способ - установить цвет / стиль вручную для каждой строки.
Вот более автоматизированное решение. Начнем с примера, взятого из документации:
%# defaults are set sometime before
set(0, 'DefaultAxesColorOrder',[1 0 0;0 1 0;0 0 1], ...
'DefaultAxesLineStyleOrder','-|--|:')
%# do plotting as usual
t = 0:pi/20:2*pi;
a = zeros(length(t),9);
for i = 1:9
a(:,i) = sin(t-i/5)';
end
h = plot(t,a);
Как вы объяснили в своем вопросе, поведение по умолчанию - сначала циклически проходить цвета, а затем стили линий. Если вы хотите применить их самостоятельно, попробуйте следующее:
c = num2cell(get(0,'DefaultAxesColorOrder'),2);
l = cellstr(get(0,'DefaultAxesLineStyleOrder'));
set(h, {'Color'}, c(rem((1:numel(h))-1,numel(c))+1), ...
{'LineStyle'}, l(rem((1:numel(h))-1,numel(l))+1))
Вы можете обернуть это в функцию для удобного доступа (вам все еще нужно передать маркеры в линии графических объектов):
function applyColorLineStyleIndependently(h)
%# ...
end
![enter image description here](https://i.stack.imgur.com/4J3eC.png)