カラーマップの範囲の制御
MATLAB® は、作成される可視化タイプの多くについて、既定でデータの全範囲をカラーマップにマップします。データの最小値はカラーマップの最初の行にマッピングされ、最大値はカラーマップの最後の行にマッピングされます。すべての中間の値が、カラーマップの中間の行に線形にマッピングされます。
この既定のマッピングはほとんどの場合に使用できますが、任意の範囲を選択してマッピングを実行することもできます。これは選択した範囲がデータの範囲と異なる場合でも可能です。異なるマッピング範囲を選択することで、次のことが可能です。
データが範囲の境界上もしくは境界外のどこに位置しているかの確認。
データが範囲内のどこにあるかの確認。
表面 Z = X + Y (-10 ≤ x ≤ 10 および -10 ≤ y ≤ 10) について考えます。
[X,Y] = meshgrid(-10:10); Z = X + Y; s = surf(X,Y,Z); xlabel('X'); ylabel('Y'); zlabel('Z = C'); colorbar
表面プロット データをカラーマップに関連付ける方法では、この表現の色を制御するプロパティについて説明しています。基本的に、Surface
オブジェクトの CData
プロパティには配列 C
が含まれており、この配列によって表面の各グリッド点がカラーマップの色に関連付けられます。既定では、C
は Z
と等価です。ここで、Z
はグリッド点での z = f(x,y) の値を含んだ配列です。したがって、色は Z
の変化とともに変わります。
マッピングの範囲は、Axes
オブジェクトの CLim
プロパティによって制御されます。このプロパティには、[cmin cmax]
の形式の 2 要素ベクトルが含まれています。cmin
の既定値は C
の最小値と等しく、cmax
の既定値は C
の最大値です。ここでは、CLim
は [-20 20]
です。これは、C
の範囲に Z
の範囲が反映されるためです。
CLim
を [0 20]
に変更することで、0
以下のすべての値がカラーマップの最初の色にクリップされます。
関数 clim
は CLim
プロパティを [0 20]
に変更します。表面の下半分が、カラーマップの最初の色 (濃い青) にマッピングされていることに注目してください。このクリップは、それらの点で C
(Z
と等しい) がゼロ以下であるために起こります。
clim([0 20])
R2022a より前: caxis([0 20])
を使用してカラーマップの範囲を変更します。
また、マッピング範囲を広げて、データがその範囲の中のどこに位置しているかを確認することもできます。たとえば、範囲を [-60 20]
に変更すると、半分の色しか使用していない表面になります。カラーマップの下半分は、C
の範囲外の値に対応するため、それらの色は表面に表示されていません。
clim([-60 20])
R2022a より前: caxis([-60 20])
を使用してカラーマップの範囲を変更します。
メモ
CLim
プロパティは、カラーマップを使用する表面プロット、パッチ、イメージ、または任意のグラフィックス オブジェクトに設定できます。ただし、このプロパティは CDataMapping
プロパティが 'scaled'
に設定されたグラフィックス オブジェクトのみに影響します。CDataMapping
プロパティが 'direct'
に設定されている場合、C
のすべての値がスケーリングなしで直接カラーマップにインデックス付けされます。C
の 1 未満の値はすべて、カラーマップの最初の色にクリップされます。カラーマップの長さよりも大きな C
の値はすべて、カラーマップの最後の色にクリップされます。
参考
clim
| colormap
| colorbar
| surf