使用 2 个坐标列和一个权重列的密度图

A density plot using 2 coordinates columns and a weight column

我有一个包含 3 列的矩阵。前两列是坐标,第三列是重量或强度。

newmat = [ 27.37  -45.69   14.47
           27.37  -45.68   18.58
           27.37  -45.67   29.05
           27.37  -45.66   51.7
            ...     ...     ... ]

我已经创建了一个散点图:

但是,我想要密度图之类的东西(如第二个图 here). I have tried to use hist3 function as in ,但我不知道如何考虑第三列 - 重量。

您可以从 newmat 中的数据创建一个矩阵(使用函数 sortrows, unique, and accumarray) and plot it as an image:

newmat = sortrows(newmat, [1 2]);  % Sort the first two columns in ascending order
[x, ~, newmat(:, 1)] = unique(newmat(:, 1));     % Make numeric indices for column 1
[y, ~, newmat(:, 2)] = unique(newmat(:, 2));     % Make numeric indices for column 2
M = accumarray(newmat(:, 1:2), newmat(:, 3)).';  % Build the matrix
imagesc(x, y, M);

下面是一些与您的格式相似的示例数据:

[X, Y] = meshgrid(0:0.1:2, 3:0.1:5);
Z = peaks(21);
newmat = [X(:) Y(:) Z(:)];

下面是上面的代码根据该数据生成的图: