ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

プロットのラインの色を定義する

はじめに

Axes の ColorOrder プロパティは、関数 plot および plot3 で描画される個々のラインの色を決めます。複数ラインのグラフの場合、これらの関数は ColorOrder で定義された色に順に使用し、リストの最後に到達するとそのサイクルを繰り返します。

colordef コマンドは、異なる背景色に対して種々の色の順序のスキームを定義します。colordef は、一般に matlabrc ファイルの中で呼び出され、MATLAB® の起動時に実行されます。

ユーザー独自の ColorOrder の定義

ColorOrder は、RGB 値からなる任意の m 行 3 列の行列となるように再定義することができます。ここで、m は色数です。しかし、plotplot3 などの高水準関数は、呼び出されるたびに (ColorOrder を含む) ほとんどの Axes のプロパティをそれらの既定にリセットします。ユーザー独自の ColorOrder 定義を使用するには、次の 3 つの手順のいずれかを実行しなければなりません。

  • Figure または Root レベルで既定の ColorOrder を定義します。

  • Axes の NextPlot プロパティを add または replacechildren に変更します。

  • 関数 line の正式でない形式を使用します。これは ColorOrder には従いますが、Axes を消去したり、プロパティのリセットを行ったりはしません。

既定の ColorOrder の変更

MATLAB セッション中に作成される任意の Figure 内のすべての Axes に対して、MATLAB が特定の Figure 内で使用する新たな ColorOrder を定義するか、MATLAB が常に使用するユーザー定義の既定として新しい ColorOrder を定義することができます。

現在の Figure のすべてのプロットに対する ColorOrder を変更するには、その Figure に既定値を設定します。たとえば、ColorOrder を赤、緑、青に設定するには、次のステートメントを使用します。

set(gcf,'DefaultAxesColorOrder',[1 0 0;0 1 0;0 0 1])

MATLAB のセッション全体におけるすべてのプロットに対して、MATLAB が使用する新たな ColorOrder を定義するには、Root レベルで既定値を設定し、任意の Figure に作成される Axes が既定値を使用するようにします。

set(0,'DefaultAxesColorOrder',[1 0 0;0 1 0;0 0 1])

MATLAB が常用する新しい ColorOrder を定義するには、前のステートメントを startup.m ファイルに配置します。

NextPlot プロパティの設定

Axes の NextPlot プロパティは、高水準なグラフィックス関数により、既存の Axes に描画する方法を決定します。このプロパティを用いると、plotplot3 が呼び出されても、ColorOrder プロパティはリセットされず、任意の既存のプロットの Axes を消去することができます。

既定では、NextPlotreplace に設定されますが、これは cla reset コマンドと等価です (すなわち、すべての Axes の子オブジェクトを削除し、Position を除くすべてのプロパティを既定値にリセットします)。NextPlotreplacechildren に設定すると、

set(gca,'NextPlot','replacechildren')

MATLAB は、Axes の子オブジェクトを削除しますが、Axes プロパティはリセットされません。これは、reset なしの cla コマンドと等価です。

NextPlotreplacechildren に設定した後で、ColorOrder プロパティを再定義し、ColorOrder に影響を与えることなく、plotplot3 を呼び出すことができます。

NextPlotadd に設定することは、hold on コマンドを実行することと等価です。この設定によって、MATLAB は ColorOrder プロパティをリセットせず、プロット関数を呼び出しても Axes の子オブジェクトを消去しません。

関数 line の使用方法

関数 line の動作は、それを呼び出す構文に依存します。(明示的なプロパティ定義を含まない) 略式の形式を使用する場合、

line(x,y,z)

lineColorOrder プロパティに従いますが、呼び出しごとに Axes を消去したり、(plot3 のように) 表示を 3 次元に変更したりはしません。しかし、plot または plot3 に自動の動作を必要とせず、複数ラインのグラフに特定の ColorOrder を使う場合、ユーザー独自のプロット関数を作成するのに line は有効です。

プロットに使用するライン スタイル - LineStyleOrder

Axes の LineStyleOrder プロパティは、ColorOrder プロパティと類似しています。それは関数 plot または plot3 で作成される複数ラインのプロットに使用するライン スタイルを指定します。MATLAB は ColorOrder プロパティのすべての色を使用してからライン スタイルを増分します。すると、2 番目のライン スタイルに対して再びすべての色が使用され、以降同様に繰り返されます。

たとえば、赤、緑、青の既定の ColorOrder を定義し、実線、破線、点線の既定の LineStyleOrder を定義します。

set(0,'DefaultAxesColorOrder',[1 0 0;0 1 0;0 0 1],...
      'DefaultAxesLineStyleOrder','-|--|:')

そして、複数のラインデータをプロットします。

t = 0:pi/20:2*pi;
a = ones(length(t),9);
for i = 1:9
    a(:,i) = sin(t-i/5)';
end
plot(t,a)

MATLAB は、各ライン スタイルごとにすべての色を繰り返して使います。

この情報は役に立ちましたか?