График плотности с использованием 2 столбцов координат и столбца весов
У меня есть матрица с 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
... ... ... ]
Я уже создал точечный график:
Тем не менее, я хотел бы иметь что-то вроде графика плотности (как второй график здесь). Я пытался использовать hist3
работать как здесь, но я не понял, как принять во внимание третий столбец - вес.
1 ответ
Решение
Вы можете создать матрицу из данных в newmat
(используя функции sortrows
, unique
, а также accumarray
) и нанесите его как изображение:
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(:)];
И вот график, который приведенный выше код производит из этих данных: