MATLAB:设置行的颜色和样式顺序并行应用

yuk*_*yuk 6 matlab plot colors line linestyle

设置时DefaultAxesColorOrder,DefaultAxesLineStyleOrderMATLAB将首先使用第一种样式循环显示所有颜色,然后再使用第二种样式循环显示所有颜色,依此类推.

请参阅此文档相关问题.

我想要做的是设置颜色顺序和样式顺序,以便独立应用.

例如,如果我设置DefaultAxesColorOrder[1 0 0; 0 1 0; 0 0 1]DefaultAxesLineStyleOrder'-|--|:',线条将是'r-','g-','b-','r--','g--','b--','r:','g:','b:'.我想线路是'r-','g--','b:'.

Amr*_*mro 4

我没有找到直接开箱即用的方法。最简单的方法是手动设置每条线的颜色/样式。

这是一个更加自动化的解决方案。让我们从文档中的示例开始:

%# 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);
Run Code Online (Sandbox Code Playgroud)

正如您在问题中所解释的,默认行为是首先循环显示颜色,然后循环显示线条样式。如果您想独立应用它们,请尝试以下操作:

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))
Run Code Online (Sandbox Code Playgroud)

您可以将其包装在一个函数中以便于访问(您仍然必须将句柄传递给线条图形对象):

function applyColorLineStyleIndependently(h)
    %# ...
end
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述