このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
プロット関数による色とライン スタイルの選択の制御
同じ座標軸に複数のデータセットを共にプロットすると、MATLAB® は自動的に異なる色 (場合によってはライン スタイルとマーカーも) をプロット オブジェクトに割り当てます。プロット関数を呼び出すときに色、ライン スタイル、およびマーカーをカスタマイズできるほか、関数を呼び出した後にプロパティを設定することもできます。
たとえば、赤の実線と緑の破線をプロットします。その後、赤の線に四角形のマーカー、緑の線に円形のマーカーを追加します。
p1 = plot([0 1 2 3],'-r'); hold on p2 = plot([1 2 3 4],'--g'); hold off % Add markers p1.Marker = 'sq'; p2.Marker = 'o';
このアプローチについては、プロットの色の指定で説明しています。これは、いくつかのプロットの側面をカスタマイズする場合に便利です。一方、それ以外の場合には柔軟性が低くなります。たとえば、ループでデータをプロットしたり、行列データをプロット関数に渡したりする場合です。このような場合、MATLAB による色、ライン スタイル、マーカーの自動割り当てを制御するプロパティを変更できます。
メモ
以下の例で使用されている機能には、R2019b 以降で使用できるものと、R2020a 以降で使用できるものが含まれています。それより前のリリースでプロットの色とライン スタイルを変更するには、プロットの各ラインの色が異なる理由とプロットに使用するライン スタイル - LineStyleOrder を参照してください。
自動割り当ての仕組み
MATLAB は、座標軸の ColorOrder
プロパティにリストされている色を繰り返し表示して、プロット オブジェクト (Line
、Scatter
、Bar
オブジェクトなど) に色を割り当てます。ColorOrder
プロパティには RGB 3 成分の配列が格納されおり、それぞれの RGB 3 成分は 1 色を定義します。既定の ColorOrder
配列には 7 色が格納されています。色の数より多くのオブジェクトを作成すると、色が繰り返されます。
プロット オブジェクトがライン スタイルとマーカーをサポートしている場合、MATLAB は座標軸の LineStyleOrder
プロパティのリストも繰り返し表示します。LineStyleOrder
プロパティには文字列の cell 配列が格納されます。各文字列はライン スタイル (またはライン スタイルとマーカーの組み合わせ) に対応します。既定の配列 LineStyleOrder
には実線スタイル ('-')
のみが格納されています。配列 LineStyleOrder
のある文字列と共に配列 ColorOrder
のすべての色が使用されてから、次の文字列が使用されます。このサイクルは、プロット オブジェクトが新しく追加されるたびに継続されます。色と文字列の組み合わせの数より多くのオブジェクトが存在する場合、サイクルが繰り返されます。
指定された配列 ColorOrder
と配列 LineStyleOrder
のペアについて、特定のプロット オブジェクトの色、ライン スタイルおよびマーカーは、そのオブジェクトの SeriesIndex
の値により決定されます。これは R2020a 以降の新しいプロパティです。既定で、SeriesIndex
プロパティはオブジェクトの作成順序に対応する数値で、1
から始まります。MATLAB はこの数値を使用して配列 ColorOrder
および配列 LineStyleOrder
のインデックスを計算します。
たとえば、axes オブジェクトを作成し、配列 ColorOrder
で 2 色 (赤と青)、配列 LineStyleOrder
で 2 種類のライン スタイル (実線と破線) を設定します。次に 5 本のラインをプロットします。
ax = axes; ax.ColorOrder = [1 0 0; 0 0 1]; ax.LineStyleOrder = {'-','--'}; hold on for i = 1:5 plot([i i+2]) end hold off
次の表に、前のプロットにおける各ラインの SeriesIndex
、配列 ColorOrder
のインデックス、および配列 LineStyleOrder
のインデックスを示します。
SeriesIndex | 配列 ColorOrder のインデックス | 配列 LineStyleOrder のインデックス | ラインの外観 | |
---|---|---|---|---|
1 番目のライン | 1 | 1 | 1 | 赤の実線 |
2 番目のライン | 2 | 2 | 1 | 青の実線 |
3 番目のライン | 3 | 1 | 2 | 赤の破線 |
4 番目のライン | 4 | 2 | 2 | 青の破線 |
5 番目のライン | 5 | 1 | 1 | 赤の実線 |
プロット オブジェクトの色、ライン スタイルおよびマーカーを変更するには、座標軸の ColorOrder
プロパティまたは LineStyleOrder
プロパティを変更するか、プロット オブジェクトの SeriesIndex
プロパティを変更します。
カラー スキームとライン スタイルの変更
座標軸の ColorOrder
プロパティを変更すると、プロットのカラー スキームが変更されます。座標軸の LineStyleOrder
プロパティを変更すると、プロットで使用されるライン スタイル (場合によってはマーカーも) が変更されます。たとえば、既定の色とライン スタイルを使用して、8 本のラインをループでプロットします。
ax = axes; hold on for i = 0:7 plot([i i+2]) end hold off
配列 ColorOrder
を、4 色の格納された新しい配列に置き換えます (関数 colororder
を使用してこの配列を置き換えることも可能)。次に、配列 LineStyleOrder
を、2 種類のライン スタイルが格納された新しい cell 配列に置き換えます。ラインに新しい色とライン スタイルが自動的に使用されます。
% Updates existing plots in R2019b or later ax.ColorOrder = [1 0 0; 0 1 0; 0 0 1; 0 0 0]; ax.LineStyleOrder = {'-','--'};
配列 ColorOrder
および配列 LineStyleOrder
のインデックスの変更
プロット オブジェクトの SeriesIndex
プロパティを変更すると、配列 ColorOrder
および配列 LineStyleOrder
のインデックスが変更されます。インデックスの変更は、あるオブジェクトの色、ライン スタイルおよびマーカーを他のオブジェクトと一致させる場合に便利です。
たとえば、波長と位相を変化させた 4 つの正弦波をループでプロットします。それぞれの正弦波について、波長に基づいて SeriesIndex
プロパティを設定します。結果のプロットで、波長の同じ正弦波は色も同じになります。
x = linspace(0,10,200); ax = axes; hold on for phi = 0:3:3 for t = 1:2 plot(x,sin(x/t + phi),'SeriesIndex',t) % Requires R2020a or later end end hold off
正弦波のうち 1 対を目立たせるには、色の順序を別の色の組に変更します。
ax.ColorOrder = [0.8 0.8 0.9; 0.2 0.2 0.8];
参考
関数
plot
|gca
|colororder