Main Content

表面プロット データをカラーマップに関連付ける方法

surfmesh などの関数を使用して表面プロットを作成する場合、関数 colormap を呼び出すことでカラー スキームをカスタマイズできます。外観をきめ細かく制御する場合は、色の方向やパターンを表面全体で変更できます。このカスタマイズでは、表面とカラーマップ間の関係を制御する配列の値を変更する必要があります。

表面とカラーマップ間の関係

Surface オブジェクトの CData プロパティには、プロット内の特定の場所とカラーマップ内の色を関連付けるインデックス配列 C が含まれています。C は、表面 z = f(x,y) と次の関係にあります。

  • CZ と同じサイズで、Z は表面上の各グリッド点の f(x,y) の値を含む配列である。

  • C(i,j) の値は、表面上のグリッド位置 (i,j) の色を制御する。

  • 既定では、CZ (高さによって変化する色に対応) と等しい。

  • 既定では、C の範囲がカラーマップ配列の行数に線形にマッピングされる。

たとえば、Z = X + Y の 3 行 3 列のサンプリングは、N 個のエントリを含んだカラーマップと次の関係にあります。

The relationship between matrix C, a colormap matrix, and a surface plot. The smallest value of C maps to the first row in the colormap matrix, and that color appears at the corresponding location of the plot. Similarly, the largest value of C maps to the last row in the colormap matrix, and that color appears at the corresponding location of the plot.

最も小さい値 (-2) がカラーマップの最初の行にマッピングされている点に注目してください。最大値 (2) はカラーマップの最後の行にマッピングされています。C の中間の値はカラーマップの中間の行に線形にマッピングされます。

メモ

前述の表面プロットは、色がどのように表面の頂点に割り当てられるかを示しています。ただし、既定の動作は、単色でパッチ面を塗りつぶすことです。その単色は、周囲の頂点に割り当てられた色に基づきます。詳細については、FaceColor プロパティの説明を参照してください。

色の方向またはパターンの変更

既定値の C=Z を使用している場合、色は Z の変化とともに変わります。

[X,Y] = meshgrid(-10:10);
Z = X + Y;
s = surf(X,Y,Z);
xlabel('X');
ylabel('Y');
zlabel('Z');

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type surface.

この動作は、表面を作成するときに C を指定することで変更できます。たとえば、この表面の色は X とともに変化します。

C = X;
s = surf(X,Y,Z,C);
xlabel('X');
ylabel('Y');
zlabel('Z');

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type surface.

あるいは、CData プロパティを直接に設定できます。次のコマンドによって、色は Y とともに変化するようになります。

s.CData = Y;

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type surface.

色は、単一の次元での変化に従う必要はありません。実際、CData には、Z と同じサイズの "任意" の配列を指定できます。たとえば、次の平面の色は sinc 関数の形状に従います。

R = sqrt(X.^2 + Y.^2) + eps;
s.CData = sin(R)./(R);

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains an object of type surface.

参考

関数

プロパティ

関連するトピック