MatlabのようなOctave3.8.1を使用していて、次のようなカラーマップ/ヒートマップを作成しようとしています。
配列a1があります。ここで、1番目の列はx、2番目の列はy、3番目の列は強度です。 plot(x、y)を使用して2Dプロットをプロットできることはわかっていますが、プロットに強度(3番目の列)を追加/表示するにはどうすればよいですか。
a1=
[225.512 2.64537 0.00201692
225.512 2.64537 0.00201692
226.94 1.59575 0.00225557
226.94 1.59575 0.00225557
227.31 1.70513 0.002282
227.31 1.70513 0.002282
227.729 5.34308 0.00205535
227.729 5.34308 0.00205535
227.975 5.12741 0.001822
227.975 5.12741 0.001822]
完全なデータセットはここにあります https://www.dropbox.com/s/mmhpbelnjoondho/full.csv
これは単なるサンプルデータであることに注意してください。
a1=
[225.512 2.64537 0.00201692
225.512 2.64537 0.00201692
226.94 1.59575 0.00225557
226.94 1.59575 0.00225557
227.31 1.70513 0.002282
227.31 1.70513 0.002282
227.729 5.34308 0.00205535
227.729 5.34308 0.00205535
227.975 5.12741 0.001822
227.975 5.12741 0.001822]
ヒートマップをプロットするには、強度データを画像(つまり、2Dマトリックス)としてプロットする必要があります。次に、imagesc
またはimshow
を使用してプロットできます。
これを行うには、最初にx値の2D行列(X
)と、対応するy値の2D行列(Y
)を取得して、グリッドを補間できるようにする必要があります。 z値の(Z
)。
x = a1(:,1);
y = a1(:,2)
z = a1(:,3)
n = 256;
[X, Y] = meshgrid(linspace(min(x),max(x),n), linspace(min(y),max(y),n));
Z = griddata(x,y,z,X,Y);
%// Remove the NaNs for imshow:
Z(isnan(Z)) = 0;
imshow(Z)
Z
を0
(またはこのデータの場合はゼロ以外の最小値をゼロに等しくする)から1
の範囲に正規化して、コントラストを向上させることができます。 :
m = min(Z(Z~=0));
M = max(Z(Z~=0));
imshow((Z-m)/(M-m));