使用 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(:)];
下面是上面的代码根据该数据生成的图:
我有一个包含 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(:)];
下面是上面的代码根据该数据生成的图: