2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MATLAB 配色関連 Tips

Last updated at Posted at 2024-10-02

はじめに

MATLAB Student Ambassador の K.M. です.

見栄えの良い配色でグラフを作ると気分が良いですよね?MATLABのデフォルト配色には安心感を覚えますが,色の数が足りなかったり,他の図との相性が悪かったりすると,自分で配色を指定する必要が生じることでしょう.

本記事では,MATLABで配色を指定する colororder を利用し,手軽に配色を整えるための Tips を紹介します.以下のグラフを例に,私のよく利用する配色設定方法を紹介します.

plot(0:0.01:1,(0:0.01:1)'.^(1:6),"linewidth",3);
axis square;

事前定義されたパレットの利用

事前定義されたパレットから好きなものを選択することができます.詳細はドキュメントを参照してください.

ここでは,"sail" を指定してみます.

colororder("sail")

配色を手動で定義

配色の配列を定義しcolororderに入力します.カラーコードでの指定例は以下の通りです.

colororder(["#FF0000"; ... 
            "#FFFF00"; ... 
            "#00FF00"; ... 
            "#00FFFF"; ... 
            "#0000FF"; ... 
            "#FF00FF"])

RGBの各要素を $[0,1]$ の範囲で指定した$N\times 3$の数値配列で配色を指定することも可能です.この場合,数値の操作で色を調整できます.ここでは配列全体を0.9倍することで少し暗くしています.

colorsRGB = [1,0,0; ...  % 赤
             1,1,0; ...  % 黄
             0,1,0; ...  % 緑
             0,1,1; ...  % シアン
             0,0,1; ...  % 青
             1,0,1];     % マゼンタ
colorsRGB = 0.9 * colorsRGB; % 色を暗くする.
colororder(colorsRGB);

Linspaceでグラデーション作成

関数のパラメータを少しずつ変化させ,その挙動を見るような状況では,配色をグラデーションにすると見やすい場合があります.

簡単な方法として,linspace を利用してRGBの数値配列を作成することが考えられます.

N         = 6;
red       = linspace(1,   0, N)';
green     = linspace(0,   1, N)';
blue      = linspace(0.2, 1, N)';
colorsRGB = [red green blue];
colororder(colorsRGB);

HSVでの色の指定

HSVで色を指定してから hsv2rgb で RGB に変換するテクニックが便利な場合もあります.個人的には,RGBの配列を直接操作するよりも直感的だと思います.

N           = 6;
hue         = mod(linspace(0.6, 1.1,  N) ,1)'; % 色相 0.6 ~ 1.15 の配列を作ってから
                                               % mod 演算で [0,1] に収める
saturation  =     linspace(0.8, 0.8,  N)';     % 彩度
value       =     linspace(0.8, 1,    N)';     % 明度

colorsHSV = [hue, saturation, value];
colorsRGB = hsv2rgb(colorsHSV);
colororder(colorsRGB)

複数のカラーコードを補完してグラデーション作成

validatecolor でカラーコードを RGB の数値配列に変換した後,線形補完でグラデーションを作成します.カラーコードさえ指定すればいい感じに間を埋めてくれるので重宝しています.

colorsHEX = ["#E63946","#A8DADC","#457B9D"]; % この3色から
N         = 6;                               % 計6色の配色を作る
Ncolor    = numel(colorsHEX);
    
colorsRGB = interp1(1:Ncolor, ... % 線形補完でグラデーションに
                    validatecolor(colorsHEX,"multiple"), ...
                    linspace(1,Ncolor,N)); 
colororder(colorsRGB)

おわりに

本記事ではMATLABでの配色の設定方法を紹介しました.より便利な方法をご存じの方は教えていただけると大変助かります.

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?