Main Content

pcolor

疑似カラー プロット

  • Pseudocolor plot

説明

pcolor(C) は行列 C 内の値を使用して疑似カラー プロットを作成します。疑似カラー プロットには色の付いたセル ("面" と呼ばれます) の配列として行列データが表示されます。MATLAB® は、x-y 平面で変動の少ない表面としてこのプロットを作成します。表面は、面の隅 (または頂点) に対応する x 座標と y 座標のグリッドによって定義されます。このグリッドは、領域 X=1:nY=1:m ([m,n] = size(C)) をカバーします。行列 C は頂点で色を指定します。各面の色はその周囲の 4 個の頂点のいずれかの色に依存します。4 個の頂点のうち、x-y グリッドの最初の頂点が面の色を決定します。

pcolor(X,Y,C) は、頂点の x 座標および y 座標を指定します。C のサイズは x-y 座標グリッドのサイズと同じでなければなりません。たとえば、XY が m 行 n 列のグリッドを定義する場合、C は m 行 n 列の行列でなければなりません。

pcolor(ax,___) はプロットのターゲット座標軸を指定します。前述の任意の構文で、最初の引数として ax を指定します。

s = pcolor(___)Surface オブジェクトを返します。s を使用して、プロットの作成後にそのプロパティを設定します。プロパティの一覧については、Surface のプロパティ を参照してください。

すべて折りたたむ

座標ベクトル X および Y と、赤、緑、青、黄、黒の 5 色を含む mymap と呼ばれるカラーマップを作成します。

X = [1 2 3; 1 2 3; 1 2 3];
Y = X';
mymap = [1 0 0; 0 1 0; 0 0 1; 1 1 0; 0 0 0];

カラーマップの色を 9 個の頂点にマッピングする行列 C を作成します。9 個の頂点のうち 4 個によって面の色が決定します。これらの頂点で、面が赤 (1)、緑 (2)、青 (3)、黄 (4) になるように色をそれぞれ指定します。その他の頂点の色を黒 (5) に設定します。

C = [3 4 5; 1 2 5; 5 5 5];

面をプロットし、関数 colormap を呼び出して既定のカラーマップを mymap で置き換えます。

pcolor(X,Y,C)
colormap(mymap)

Figure contains an axes object. The axes object contains an object of type surface.

アダマール行列は、1 または -1 の要素をもちます。この行列を可視化する優れた方法は、2 色のカラーマップを使用することです。

20 行 20 列のアダマール行列を作成します。次に、モノクロのカラーマップを使用して行列をプロットします。関数 axis を使用して y 軸の方向を反転し、軸のラインを同じ長さに設定します。

C = hadamard(20);
pcolor(C)
colormap(gray(2))
axis ij
axis square

Figure contains an axes object. The axes object contains an object of type surface.

色行列 C を作成します。次に、C の疑似カラー プロットを作成して、Surface オブジェクトを戻り引数 s に格納します。

C = [1 2 3; 4 5 6; 7 8 9];
s = pcolor(C);

Figure contains an axes object. The axes object contains an object of type surface.

sEdgeColor プロパティを設定して、境界線の色を変更します。LineWidth プロパティを設定して、境界線を太くします。

s.EdgeColor = [1 0.7 0.3];
s.LineWidth = 6;

Figure contains an axes object. The axes object contains an object of type surface.

色行列 C を作成します。次に、C の疑似カラー プロットを作成して、Surface オブジェクトを戻り引数 s に格納します。

C = [5 13 9 7 12; 11 2 14 8 10; 6 1 3 4 15];
s = pcolor(C);

Figure contains an axes object. The axes object contains an object of type surface.

面全体で色を内挿するには、sFaceColor プロパティを 'interp' に設定します。

s.FaceColor = 'interp';

Figure contains an axes object. The axes object contains an object of type surface.

頂点が等間隔のグリッドを定義する行列 XY を作成します。行列 LYY のログとして計算します。次に、カラー インデックスの行の組が交互に含まれる行列 C を作成します。

[X,Y] = meshgrid(1:20);
LY = log(Y);
colorscale = [1:20; 20:-1:1];
C = repmat(colorscale,10,1);

C で指定した色を使用して、XLY をプロットします。次に、y 軸で目盛りラベルを調整します。

s = pcolor(X,LY,C);
tickvals = LY(2:2:20,1)';
set(gca,'YTick',tickvals);

Figure contains an axes object. The axes object contains an object of type surface.

頂点が等間隔のグリッドを定義する行列 XY を作成します。行列 XXYYXY の関数として計算します。次に、カラー インデックスの行の組が交互に含まれる行列 C を作成します。

[X,Y] = meshgrid(-3:6/17:3);
XX = 2*X.*Y;
YY = X.^2 - Y.^2;
colorscale = [1:18; 18:-1:1];
C = repmat(colorscale,9,1);

C の色を使用して XXYY をプロットします。

pcolor(XX,YY,C);

Figure contains an axes object. The axes object contains an object of type surface.

R2019b 以降、関数 tiledlayout および nexttile を使用して、プロットをタイル表示できます。関数 tiledlayout を呼び出して、1 行 2 列のタイル表示チャート レイアウトを作成します。関数 nexttile を呼び出して、axes オブジェクト ax1 および ax2 を作成します。この座標軸を pcolor に対する最初の引数として指定し、2 つの疑似カラー プロットを作成します。

tiledlayout(1,2)

% Left plot
ax1 = nexttile;
C1 = rand(20,10);
pcolor(ax1,C1)

% Right plot
ax2 = nexttile;
C2 = rand(50,10);
pcolor(ax2,C2)

Figure contains 2 axes objects. Axes object 1 contains an object of type surface. Axes object 2 contains an object of type surface.

入力引数

すべて折りたたむ

カラーマップへのインデックスが含まれる色行列。C の値はカラーマップ配列の色を各面の周辺の頂点にマッピングします。面の色はその 4 個の頂点のいずれかの色に依存します。4 個の頂点のうち、XY の最初の頂点が面の色を決定します。XY を指定しない場合、MATLAB は X=1:nY=1:m ([m,n] = size(C)) を使用します。頂点の色と面の色のこの関係によって、C の最後の行と列の値はどれもプロットで表されません。

2-by-2 pseudocolor plot with four faces and a different colored dot at each of the nine vertices. The color of each face is determined by the color of its lower-left vertex. The five vertices along the top and right edges of the plot do not determine the color of any face.

メモ

面の最初の頂点は対応する行列の左上隅に最も近くなります。ただし、y 軸は下から上に増加するため、プロットに表示される最初の頂点は通常、面の左下隅になります。必要な効果を実現するために、y 軸の方向または行列 C の方向を変更しなければならない場合があります。

頂点と面の色の関係を示す簡単な例については、4 色を使用した 4 面のプロットを参照してください。

C の値はカラーマップの範囲全体にスケーリングされます。C の最小値は、カラーマップ配列の最初の行にマッピングされます。C の最大値はカラーマップ配列の最後の行にマッピングされます。C の中間の値はカラーマップ配列の中間の行に線形にマッピングされます。関数 clim を使用してこのマッピングを調整できます。

R2022a より前: 関数 caxis を使用します。その構文と引数は clim と同じです。

Surface オブジェクトの CData プロパティに C の値が格納されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

x 座標。C と同じサイズの行列または長さが n のベクトル ([m,n] = size(C)) として指定します。X の既定値はベクトル (1:n) です。

頂点の四角形グリッドを作成するには、X を次のいずれかとして指定します。

  • 増加または減少する値が含まれるベクトル。

  • 1 つの次元に沿って増加または減少し、それ以外の次元に沿って一定である行列。行列 Y で変化する次元とは反対に変化する次元を設定します。行列 X と行列 Y を作成するには、関数 meshgrid を使用できます。

パラメトリックなグリッドを作成するには、四角形グリッドを作成し、数学関数を使用してそれを渡します。

例: X = 1:10

例: X = [1 2 3; 1 2 3; 1 2 3]

例: [X,Y] = meshgrid(1:10)

Surface オブジェクトの XData プロパティに x 座標が格納されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration

y 座標。C と同じサイズの行列または長さが m のベクトル ([m,n] = size(C)) として指定します。Y の既定値はベクトル (1:m) です。

頂点の四角形グリッドを作成するには、Y を次のいずれかとして指定します。

  • 増加または減少する値が含まれるベクトル。

  • 1 つの次元に沿って増加または減少し、それ以外の次元に沿って一定である行列。行列 X で変化する次元とは反対に変化する次元を設定します。行列 X と行列 Y を作成するには、関数 meshgrid を使用できます。

パラメトリックなグリッドを作成するには、四角形グリッドを作成し、数学関数を使用してそれを渡します。

例: Y = 1:10

例: Y = [1 1 1; 2 2 2; 3 3 3]

例: [X,Y] = meshgrid(1:10)

Surface オブジェクトの YData プロパティに y 座標が格納されます。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | categorical | datetime | duration

ターゲット座標軸。Axes オブジェクトとして指定します。座標軸を指定しない場合、pcolor は現在の座標軸にプロットします。

アルゴリズム

関数 pcolor、関数 image、関数 imagesc を使用して、色付きセルの方形配列を表示します。色行列 C と色付きセル間の関係は、それぞれの場合で異なります。

  • pcolor(C)C の値を使用し、カラーマップの範囲全体に値をスケーリングして頂点の色を定義します。C のサイズが頂点の数を決定します。C の値は現在のカラーマップから各セルの周辺の頂点に色をマッピングします。

  • image(C)C を使用してセルの色を定義します。値は直接カラーマップにマッピングされます。C のサイズがセルの数を決定します。

  • imagesc(C)C を使用し、カラーマップの範囲全体に値をスケーリングしてセルの色を定義します。C のサイズがセルの数を決定します。

拡張機能

バージョン履歴

R2006a より前に導入