如何使用MATLAB中坐标给出的值制作热图?

时间:2014-05-06 22:12:57

标签: image matlab plot

我有一个10018x3矩阵,其中每一行代表一个特定(x, y)坐标的测量值。也就是说,第一列包含所有x值,第二列包含所有y值,第三列包含所有度量值。

The matrix is available here.

我现在想绘制测量的热图。我该怎么做?


我的尝试,虽然可能是愚蠢的,但是要做scatter3(x, y, z),这会让我这样做 enter image description here

虽然我可以看到这种趋势,但我所希望的却是这样。 enter image description here

2 个答案:

答案 0 :(得分:5)

您还可以使用TriScatteredInterp进行插值并创建等高线图:

x=linspace(min(data(:,1)),max(data(:,1)),150);
y=linspace(min(data(:,2)),max(data(:,2)),150);
[X,Y]=meshgrid(x,y);
F=TriScatteredInterp(data(:,1),data(:,2),data(:,3)-1);
contourf(X,Y,F(X,Y),100,'LineColor','none')

答案 1 :(得分:2)

我像你一样使用scatter3,但你可以指定每个点的大小以及属于颜色图的每个标记的颜色。一旦我这样做,我设置视图,以便我直视上方。

试试这段代码。这假设您的数据存储在一个名为data的矩阵中,并且在您之前刚刚讨论过的结构中:

% Set colour map
colormap(jet);
% Make 3D plot with filled circles coloured in the scheme of the 
% measurements
scatter3(data(:,1), data(:,2), data(:,3), 30, data(:,3), 'filled');
% Set the azimuth and latitude to look directly above
view(0,90);
colorbar; % Throw in the colour bar.

这就是我得到的:

enter image description here