我有一个10018x3
矩阵,其中每一行代表一个特定(x, y)
坐标的测量值。也就是说,第一列包含所有x
值,第二列包含所有y
值,第三列包含所有度量值。
我现在想绘制测量的热图。我该怎么做?
我的尝试,虽然可能是愚蠢的,但是要做scatter3(x, y, z)
,这会让我这样做
虽然我可以看到这种趋势,但我所希望的却是这样。
答案 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.
这就是我得到的: