【问题标题】:Plotting many graphs with different and distinguishable colors绘制许多具有不同和可区分颜色的图形
【发布时间】:2025-12-25 05:25:06
【问题描述】:

我有这个绘图循环,我想给它分配不同的颜色。现在它只考虑它想要的颜色。所以,当N 增加时,一些图形的颜色是相同的。所以区分它们真的很难。如何为不同的图表指定不同的颜色?

N=24 是图的数量。

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

【问题讨论】:

  • 我只想在图中有不同的颜色,感知很重要。信息可以通过它们的矩阵来提取。

标签: matlab plot colors matlab-figure


【解决方案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

示例输出:

【讨论】:

  • 这并不重要,但可能您的代码实际上正在使用plot(x,x.^i,'.-','color',C{i});
【解决方案2】:

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

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' 属性。

【讨论】:

    最近更新 更多