Matlab选择用于绘图的随机颜色

21

我有6个向量,想绘制它们。如何使每个图使用不同的颜色(随机)? 使用下面的代码,所有六个向量都将被限制为一个颜色。

plot(x,y,'-rs','LineWidth',1,...
      'MarkerEdgeColor','k',...
      'MarkerFaceColor','g',...
      'MarkerSize',5);

可能是在MATLAB中自动绘制不同颜色的线条的重复问题。 - gnovice
2个回答

43
你可以让PLOT为你自动选择线条颜色。如果你的6个向量长度相同,你可以将x和y坐标放入N-by-6矩阵XY中,并将它们传递给PLOT。每列将使用不同的颜色:
plot(X,Y,'-s');  %# Plots lines with square markers
你也可以使用一些内置的颜色映射来生成一组颜色,然后在分别绘制每条线时使用这些颜色。例如:
cmap = hsv(6);  %# Creates a 6-by-3 set of colors from the HSV colormap
for i = 1:6     %# Loop 6 times
  plot(X(:,i),Y(:,i),'-s','Color',cmap(i,:));  %# Plot each column with a
                                               %#   different color
end

非常感谢。我想知道如果我有21个不同的向量,我能否将cmap = hsv(6)更改为cmap = hsv(21)? - Jessy
@Jessy:是的,hsv(N)会返回一个N行3列的颜色映射表,每行有一个RGB颜色。 - gnovice
2
对于使用色彩图谱给予正面评价。我发现纯随机颜色在显示方面表现非常糟糕 - 颜色之间的对比通常不足,而且颜色过亮或过暗。沿着标准色彩图谱均匀取样可以得到更加愉悦和可读的颜色组合。 - Kena
1
如果确实需要随机颜色,您可以将循环更改为:for i = randperm(6) - Dennis Jaheruddin
"lines" 色图生成更深的颜色。 - John Smith
这个回答值得更多的点赞。问题已经有17K的浏览量,而回答只有12个悲惨的赞,包括我的。 - Wok

4
要创建一个随机的颜色地图,您可以按照以下步骤进行操作:
myMap = rand(nbColors, 3);
for i = 1:nbColors
  plot(X(:,i),Y(:,i),'-s','Color',myMap(i,:));
end

然而,正如我在对gnovice答案的评论中所述,从色图中选择颜色通常提供更易读的颜色组合。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接