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

Toa*_*222 21 matlab plot default colors colormap

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

ray*_*ica 28

好问题!MATLAB有一个默认的颜色顺序.请注意,R2014b之前的版本,MATLAB的默认颜色顺序使用喷射颜色映射.在喷射彩色图中,第一个图是蓝色,第二个图是绿色.对于R2014b之后的版本,这遵循parula颜色图,其中第一个图是浅蓝色,其次是第二个图是铜橙色.如果您确实想知道绘图的颜色顺序是什么,请确保在MATLAB中打开绘图,然后执行以下操作:

get(gca,'colororder')
Run Code Online (Sandbox Code Playgroud)

这将返回一个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
Run Code Online (Sandbox Code Playgroud)

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

因此,上述颜色顺序为:

  1. 纯蓝色
  2. 较浅的绿色
  3. 纯红色
  4. 绿色和蓝色的混合物,是青色的
  5. 红色和蓝色的混合物,它是洋红色
  6. 红色和绿色的混合物,是黄色的
  7. 红色,绿色和蓝色的混合物,看起来像深灰色.

目前(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
Run Code Online (Sandbox Code Playgroud)

在这种情况下,RGB元组稍微复杂一些,因此很难通过查看颜色来推断它们是什么.


作为额外的奖励,我们可以为您创建一个可视化这些颜色的图像.假设您有图像处理工具箱,这是我编写的代码,用于为您放置在图中的每个绘图显示这些颜色.

colours = permute(get(gca, 'colororder'), [1 3 2]);
colours_resize = imresize(colours, 50.0, 'nearest');
imshow(colours_resize);
Run Code Online (Sandbox Code Playgroud)

以下是我对MATLAB R2013a的了解:

在此输入图像描述

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

在此输入图像描述


或者,您始终可以使用legend描述哪些直方图来自哪些数据.


Dev*_*-iL 20

存在用于此特定目的的色图 - 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.
Run Code Online (Sandbox Code Playgroud)

如果打开文档lines,您可以看到一个非常类似于rayryeng答案中出现的预览图像:

在此输入图像描述

因此,只要您使用默认值colormap,要知道第一n行的颜色,您需要做的就是调用lines(n).