我看不到直接开箱即用的方法。直接的方法是为每一行手动设置颜色/样式。
这是一个更自动化的解决方案。让我们从文档中的一个示例开始:
%# 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