Main Content

パッチ データをカラーマップに関係付ける方法

Patch オブジェクトを使用するグラフィックスを作成する場合、関数 colormap を呼び出すことで、カラー スキーム全体を制御できます。また、次の方法でも、カラーマップとパッチ間の関係を制御することができます。

  • 面に特定の色を割り当てる

  • 各面の周囲の頂点に特定の色を割り当てる

これらの関係を制御する方法は、パッチを x、y、および z 座標として指定するか、面-頂点データとして指定するかによって異なります。

カラーマップと x、y、z 座標配列の関係

Patch オブジェクトを x、y、および z 座標配列を使用して作成する場合、Patch オブジェクトの CData プロパティにはインデックス配列 C が含まれます。この配列は、カラーマップとパッチ間の関係を制御します。面に色を割り当てるには、次の特徴をもつ配列として C を指定します。

  • C は n 行 1 列の配列 (n は面の数)。

  • C(i) の値は、面 i の色を制御する。

以下に C および、カラーマップと 3 つの面に対する関係の例を示します。C(i) の値は、頂点 (X(i,:), Y(i,:)) によって定義された面の色を制御します。

Diagram showing how the values in matrix C correspond to rows in the colormap array and to three triangular patch faces.

C の最小値は 0 です。これは、カラーマップの最初の行にマッピングされます。C の最大値は、1 であり、カラーマップの最後の行にマッピングされます。C の中間の値は、カラーマップの中間の行に線形にマッピングされます。この場合、C(2) は、カラーマップの先頭からほぼ 2/3 に位置する色にマッピングされます。次のコードによって、前の図に示されている Patch オブジェクトが作成されます。

X = [0 0 5; 0 0 5; 4 4 9];
Y = [0 4 0; 3 7 3; 0 4 0];
C = [0; .6667; 1];
p = patch(X,Y,C);
colorbar

Three triangular patch faces displayed with a colorbar

頂点にカラーを割り当てるには、次の特徴をもつ配列として C を指定します。

  • C は m 行 n 列の配列 (m は面あたりの頂点の数、n は面の数)。

  • C(i,j) の値は、面 j の頂点 i の色を制御する。

ここでは、C および、カラーマップと 6 つの頂点に対する関係の例を示します。C(i,j) の値は、(X(i,j), Y(i,j)) の頂点の色を制御します。

Diagram showing how the values in matrix C correspond to rows in the colormap array and to the vertices of two triangular patch faces. The colors from each vertex blend to form a color gradient across each of the faces.

パッチ面と同様に、MATLAB® によって C の値がカラーマップの行数に対してスケーリングされます。この場合、最小値は C(2,2)=1 で、カラーマップの最初の行にマッピングされます。最大値は、C(3,1)=6 であり、カラーマップの最後の行にマッピングされます。

次のコードによって、前の図に示されている Patch オブジェクトが作成されます。FaceColor プロパティは 'interp' に設定され、頂点の色がそれぞれの面で混ざり合います。

clf
X = [0 3; 0 3; 5 6];
Y = [0 3; 5 6; 0 3];
C = [5 4; 2 0; 6 3];
p = patch(X,Y,C,'FaceColor','interp');
colorbar

Two triangular patch faces with colors specified for the six vertices

カラーマップと面-頂点データの関係

面-頂点データを使用してパッチを作成した場合、Patch オブジェクトの FaceVertexCData プロパティにはインデックス配列 C が含まれます。この配列は、カラーマップとパッチ間の関係を制御します。

面に色を割り当てるには、次の特徴をもつ配列として C を指定します。

  • C は n 行 1 列の配列 (n は面の数)。

  • C(i) の値は、面 i の色を制御する。

以下に C および、カラーマップと 3 つの面に対する関係の例を示します。

Diagram showing how the values in matrix C correspond to rows in the colormap array and to three triangular patch faces.

C の最小値は 0 で、カラーマップの最初の行にマッピングされます。C の最大値は 1 で、カラーマップの最後の値にマッピングされます。C の中間の値は、カラーマップの中間の行に線形にマッピングされます。この場合、C(2) は、カラーマップの下からほぼ 2/3 に位置する色にマッピングされます。

次のコードによって、前の図に示されている Patch オブジェクトが作成されます。FaceColor プロパティが 'flat' に設定され、既定の色である黒の代わりに、カラーマップの色が表示されます。

clf
vertices = [0 0; 0 3; 4 0; 0 4; 0 7; 4 4; 5 0; 5 3; 9 0];
faces = [1 2 3; 4 5 6; 7 8 9];
C = [0; 0.6667; 1];
p = patch('Faces',faces,'Vertices',vertices,'FaceVertexCData',C);
p.FaceColor = 'flat';
colorbar

Three triangular patch faces displayed with a colorbar

頂点に色を割り当てるには、Patch オブジェクトの FaceVertexCData プロパティを、次の特徴をもつ配列 C として指定します。

  • C は n 行 1 列の配列 (n は頂点の数)。

  • C(i) の値は、頂点 i の色を制御する。

ここでは、C および、カラーマップと 6 つの頂点に対する関係の例を示します。

Diagram showing how the values in matrix C correspond to rows in the colormap array and to the vertices of two triangular patch faces. The colors from each vertex blend to form a color gradient across each of the faces.

パッチ面と同様に、MATLAB によって C の値がカラーマップの行数に対してスケーリングされます。この場合、最小値は C(2)=1 で、カラーマップの最初の行にマッピングされます。最大値は、C(6)=6 であり、カラーマップの最後の行にマッピングされます。

次のコードによって、前の図に示されている Patch オブジェクトが作成されます。FaceColor プロパティは 'interp' に設定され、頂点の色がそれぞれの面で混ざり合います。

clf
vertices = [0 0; 0 5; 5 0; 3 3; 3 6; 6 3];
faces = [1 2 3; 4 5 6];
C = [5; 1; 4; 3; 2; 6];
p = patch('Faces',faces,'Vertices',vertices,'FaceVertexCData',C);
p.FaceColor = 'interp';
colorbar

Two triangular patch faces with colors specified for the six vertices

参考

関数

プロパティ

関連するトピック