我使用非常大的数据生成了许多(数千)图。我需要一种非常简单的方法来使我的标记具有不同的颜色,但每个元素都需要保持它的颜色。在我的主要 for 循环中,我有:
for i = 1:finaltime
plot(pos(i,:), track(i,:), 'o', 'MarkerSize', 9) ;
其中“pos”表示元素的位置(有1000个),“track”表示元素所在的轨道号(有4个)。因此,对于矩阵“pos”中的每个标记(对应于每列),我需要1000种不同的颜色,其中 finaltime 大小为1000。对于生成的每个图形(它们将有 finaltime ),我希望1000个元素保持其颜色。例如,“pos”中的第一个元素在整个模拟过程中是蓝色的。第二个元素是红色等。
答案 0 :(得分:3)
我的一个建议是生成一个1000个元素的调色板,然后对于您拥有的每组观察,只需将标记设置为此调色板中的一种颜色即可。
如果我理解正确,您有一个矩阵,pos
和track
的每对列都有唯一的颜色。基本上,pos
和track
的每一行都有1000个点,每个点应分配不同的颜色。对于您绘制的每一行,您需要确保所有行的颜色方案相同。如果是这种情况,那么您需要绘制列并相应地应用颜色图。
因此,做这样的事情:
c = jet(1000);
figure; hold on;
for idx = 1 : 1000
plot(pos(:,idx), track(:,idx), 'o', 'MarkerSize', 9, 'Color', c(idx,:));
end
jet
是MATLAB命令,它生成默认为MATLAB(2014年之前)的颜色映射。
您可以浏览其他颜色地图,完整列表如下所示:
如果要使用其他颜色映射,只需使用名称并将其作为函数调用,并使用整数作为输入。此整数将在该颜色映射的范围内为您提供多种颜色。因此,假设您想要具有256色的hsv
颜色贴图。你会这样做:
c = hsv(256);
答案 1 :(得分:0)
我发现答案实际上非常简单......如果我只使用scatter
代替plot
,scatter
函数可以采用一系列颜色,而{{1一次只能采用一种颜色。所以我只是将代码更改为:
plot
其中scatter(pos(i,:), track(i,:), c );
并指定颜色。谢谢!