什么是默认的MATLAB颜色顺序?

时间:2014-10-15 00:11:35

标签: matlab plot colors default colormap

我有两个直方图的情节。但是,很难分辨出绘图上的哪个直方图来自第一组数据,哪个绘制了第二组数据。每个直方图都有不同的彩色线:一个是蓝色,另一个是绿色。设备之间的默认MATLAB 'ColorOrder'是否不同?如果不是 - 订单是什么?

2 个答案:

答案 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

每行为您提供特定颜色的红色,绿色和蓝色值。第一行表示绘图上的第一种颜色,后面是表示第二种颜色的第二行,依此类推。

因此,上述颜色顺序为:

  1. 纯蓝色
  2. 浅绿色
  3. 纯红色
  4. 绿色和蓝色的混合物,其为青色
  5. 红色和蓝色的混合物,它是洋红色的
  6. 红色和绿色的混合物,其为黄色
  7. 红色,绿色和蓝色的混合物,看起来像深灰色。
  8. 目前(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的了解:

    enter image description here

    在MATLAB R2015a中再次运行此代码,这就是我得到的:

    enter image description here


    或者,您始终可以使用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中显示的内容非常相似的预览图像:

enter image description here

因此,只要您使用默认colormap,就知道第一行n行的颜色,您只需要调用lines(n)。< / p>