web-dev-qa-db-ja.com

デフォルトのMATLABカラーオーダーは何ですか?

2つのヒストグラムのプロットがあります。ただし、プロットのどのヒストグラムが最初のデータセットからのもので、どのグラフが2番目のデータセットのグラフであるかを判別するのは困難です。各ヒストグラムには異なる色の線があります。1つは青で、もう1つは緑です。デフォルトのMATLAB 'ColorOrder'デバイスによって異なりますか?そうでない場合-順序は何ですか?

20
Toad22222

良い質問! MATLABにはデフォルトの色順があります。 MATLABのデフォルトの色順であるR2014bより前のバージョンでは、ジェットカラーマップが使用されることに注意してください。ジェットカラーマップでは、最初のプロットは青で、2番目のプロットは緑です。 R2014b以降のバージョンでは、これはparulaカラーマップに従います。最初のプロットは明るい青になり、2番目のプロットは銅オレンジ色になります。実際にプロットの色の順序を知りたい場合は、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

各行には、特定の色の赤、緑、青の値が表示されます。最初の行はプロットに表示する最初の色を示し、2番目の行は2番目の色を示し、以下同様に続きます。

そのため、上記の色の順序は次のとおりです。

  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

この場合の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 を常に使用して、どのヒストグラムがどのデータからのものであるかを示すことができます。

27
rayryeng

この特定の目的のためのカラーマップがあります-linesR2006aの前に導入されました)。 _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)を呼び出すことだけです。

20
Dev-iL