Ric*_*k T 6 matlab octave color-mapping heatmap colormap
我正在使用Octave 3.8.1,就像Matlab一样,我正在尝试创建一个颜色贴图/热图,看起来像这样
我有一个数组a1,其中第一个col是x,第二个col是y,第三个col是强度.我知道我可以使用plot(x,y)绘制一个2D图,但是如何在图中添加/显示强度(第三列).
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]
Run Code Online (Sandbox Code Playgroud)
完整数据集位于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]
Run Code Online (Sandbox Code Playgroud)
为了绘制您的热图,您需要将数据强度增强为图像(即2D矩阵)。然后,您可以使用imagesc或绘制它imshow。
为此,您首先需要获得x值的二维矩阵(X)和y值的相应二维矩阵(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)
Run Code Online (Sandbox Code Playgroud)
您可能需要规范化Z范围0(或在此数据的情况下,使最低的非零值等于零)1以改善对比度:
m = min(Z(Z~=0));
M = max(Z(Z~=0));
imshow((Z-m)/(M-m));
Run Code Online (Sandbox Code Playgroud)