代码之家  ›  专栏  ›  技术社区  ›  Aviad

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

  •  2
  • Aviad  · 技术社区  · 7 年前

    我有一个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
                ...     ...     ... ]
    

    我已经创建了散点图:

    scatterplot

    然而,我想要一个密度图(作为第二个图 here ). 我试着使用 hist3 功能如中所示 here ,但我不知道如何考虑第三列的权重。

    1 回复  |  直到 7 年前
        1
  •  0
  •   gnovice    7 年前

    您可以从中的数据创建一个矩阵 newmat (使用功能 sortrows unique accumarray 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(:)];
    

    enter image description here