绘制具有不同且可区分颜色的许多图形

时间:2018-04-25 14:16:00

标签: matlab plot colors matlab-figure

我有这个绘图循环,我想为它分配不同的颜色。现在它只考虑它想要的颜色。因此,当N增加时,某些图表的颜色会相同。因此,区分它们真的很难。如何将不同的颜色专用于不同的图形?

N=24并且是图表的数量。

for i=1:N 
    plot(time(1:350),STDX(1:350,i),'lineWidth',3) 
hold on 
end

2 个答案:

答案 0 :(得分:1)

您可以制作所需颜色的单元格数组,然后使用这些颜色在循环内设置绘图颜色。这是一个例子:

C = {'k','b','r','g','y',[.5 .6 .7],[.8 .2 .6]}; % Cell array of colors
figure;
x = 0:.01:1;
hold on
for i=1:7
   plot(x,x.^i,'color',C{i});
end

示例输出: enter image description here

答案 1 :(得分:1)

让我们定义一些示例值,因为您没有提供任何:

N = 24;
time = linspace(0, 5, 350).';
STDX = cos(bsxfun(@times, time, linspace(0, 1, N))); % example values

在最近的Matlab版本中,您只需要根据需要设置轴的'ColorOrder'属性,然后正常绘图:

set(gca, 'ColorOrder', parula(24)) % set ColorOrder property of the axis
hold on 
for ii = 1:N 
    plot(time(1:350), STDX(1:350, ii), 'lineWidth', 3) 
end

另请注意,您可以摆脱循环,只需使用

set(gca, 'ColorOrder', parula(24)) % set ColorOrder property of the axis
hold on
plot(time, STDX, 'lineWidth', 3)

自动绘制具有不同颜色的STDX的每列。这仍然需要hold on,因此对plot的调用不会重置'ColorOrder'属性。

enter image description here