我有两个直方图的情节。但是,很难分辨出绘图上的哪个直方图来自第一组数据,哪个绘制了第二组数据。每个直方图都有不同的彩色线:一个是蓝色,另一个是绿色。设备之间的默认MATLAB 'ColorOrder'
是否不同?如果不是 - 订单是什么?
答案 0 :(得分:26)
好问题! MATLAB有一个默认的颜色顺序。请注意,R2014b之前的版本,MATLAB的默认颜色顺序使用喷射颜色映射。在喷射彩色图中,第一个图是蓝色,第二个图是绿色。对于R2014b之后的版本,这遵循parula颜色图,其中第一个图是浅蓝色,其次是第二个图是铜橙色。如果您确实想知道绘图的颜色顺序是什么,请确保在MATLAB中打开绘图,然后执行以下操作:
get(gca,'colororder')
这将返回一个2D矩阵,其中每一行为您生成的每个绘图提供红色,绿色和蓝色的比例。我在运行MATLAB R2013a和Mac OSX 10.9.5时,在我的机器上,这就是我得到的:
>> get(gca,'colororder')
ans =
0 0 1.0000
0 0.5000 0
1.0000 0 0
0 0.7500 0.7500
0.7500 0 0.7500
0.7500 0.7500 0
0.2500 0.2500 0.2500
每行为您提供特定颜色的红色,绿色和蓝色值。第一行表示绘图上的第一种颜色,后面是表示第二种颜色的第二行,依此类推。
因此,上述颜色顺序为:
目前(2016年3月10日),我正在使用MATLAB R2015a,这是我得到的颜色图:
>> get(gca,'colororder')
ans =
0 0.4470 0.7410
0.8500 0.3250 0.0980
0.9290 0.6940 0.1250
0.4940 0.1840 0.5560
0.4660 0.6740 0.1880
0.3010 0.7450 0.9330
0.6350 0.0780 0.1840
在这种情况下,RGB元组稍微复杂一些,因此很难通过查看颜色来推断它们是什么。
作为额外的奖励,我们可以为您创建一个可视化这些颜色的图像。假设您有图像处理工具箱,这是我编写的代码,用于为您放置在图中的每个绘图显示这些颜色。
colours = permute(get(gca, 'colororder'), [1 3 2]);
colours_resize = imresize(colours, 50.0, 'nearest');
imshow(colours_resize);
以下是我对MATLAB R2013a的了解:
在MATLAB R2015a中再次运行此代码,这就是我得到的:
或者,您始终可以使用legend
来描述哪些直方图来自哪些数据。
答案 1 :(得分:18)
存在用于此特定目的的色彩映射 - lines
(在R2006a之前引入)。
这是lines.m
所说的内容:
%LINES Color map with the line colors.
% LINES(M) returns an M-by-3 matrix containing a "ColorOrder"
% colormap. LINES, by itself, is the same length as the current
% colormap. If no figure exists, MATLAB uses the length of the
% default colormap.
如果您打开lines
的文档,则可以看到与rayryeng's answer中显示的内容非常相似的预览图像:
因此,只要您使用默认colormap
,就知道第一行n
行的颜色,您只需要调用lines(n)
。< / p>