在Matlab中,如何在绘图时控制颜色迭代器?

在Matlab中,如何在绘图时控制颜色迭代器?,matlab,plot,Matlab,Plot,我想用相同的颜色绘制一组图(或子图),然后前进到下一种颜色,再次绘制一组图,依此类推。使用默认颜色是可以的。此外,我的绘图数量可能会超过默认值中的颜色数量,因此我需要在其中循环。我怎样才能做到这一点呢?这样的东西能满足您的要求吗?如果有很多图表的颜色经常变化,那么可以创建一个字典,索引时间(当发生颜色切换时)作为键,颜色作为值。下面的代码更简单 % Colors for 10 red plots and 5 black plots colors = [repmat('r', 1, 10), re

我想用相同的颜色绘制一组图(或子图),然后前进到下一种颜色,再次绘制一组图,依此类推。使用默认颜色是可以的。此外,我的绘图数量可能会超过默认值中的颜色数量,因此我需要在其中循环。我怎样才能做到这一点呢?

这样的东西能满足您的要求吗?如果有很多图表的颜色经常变化,那么可以创建一个字典,索引时间(当发生颜色切换时)作为键,颜色作为值。下面的代码更简单

% Colors for 10 red plots and 5 black plots
colors = [repmat('r', 1, 10), repmat('b', 1, 5)];
for i = 1:length(colors)
    figure; plot(x, y, colors(i));
end

每次打印时,您都可以随机选择颜色:

% Create a random RGB color
color = rand(1,3);

% Plot as many times as needed with the newly created random color
plot (X,Y,'color', color)

创建轴时,可以根据需要多次循环执行此操作,它具有属性
ColorOrderIndex
,该属性表示要使用的下一种颜色的索引。
ColorOrderIndex
的初始值为
1
,每次向同一轴添加新绘图时(无需清除,即使用
按住
),该值会增加并循环使用所有颜色(它们本身存储在属性
ColorIndex
中,作为一个2d矩阵,有三列,其中每行表示一个RGB三元组。该矩阵有一个默认值,由7种颜色组成(在Matlab R2015a中),但您可以为其指定任何其他颜色)。 因此,通过手动确保
ColorOrderIndex
属性的值不增加,您可以为下一个绘图保持相同的颜色

ax=轴;
等等
NumberOfColor=长度(最大颜色顺序);
ax.ColorOrderIndex=1;
绘图([0,0],[0,1],“线宽”,2);
ax.ColorOrderIndex=mod(ax.ColorOrderIndex-2,numberOfColors)+1;%保持相同颜色
绘图([1,1],[0,1],“线宽”,2);
ax.ColorOrderIndex=mod(ax.ColorOrderIndex-2,numberOfColors)+1;%保持相同颜色
绘图([2,2],[0,1],“线宽”,2);
%变色
绘图([3,3],[0,1],“线宽”,2);
ax.ColorOrderIndex=mod(ax.ColorOrderIndex-2,numberOfColors)+1;%保持相同颜色
绘图([4,4],[0,1],“线宽”,2);
%变色
绘图([5,5],[0,1],“线宽”,2);
ax.ColorOrderIndex=mod(ax.ColorOrderIndex-2,numberOfColors)+1;%保持相同颜色
绘图([6,6],[0,1],“线宽”,2);
ax.ColorOrderIndex=mod(ax.ColorOrderIndex-2,numberOfColors)+1;%保持相同颜色
绘图([7,7],[0,1],“线宽”,2);
ax.ColorOrderIndex=mod(ax.ColorOrderIndex-2,numberOfColors)+1;%保持相同颜色
绘图([8,8],[0,1],“线宽”,2);
%等等。。。

不,这不起作用,因为它没有预先定义每种颜色的绘图数量。MATLAB中的注释不使用#符号,您可能需要更改它