Plot Heatmap from distinct coordinates and data array of floats
18 views (last 30 days)
I have an array of floats of size 200x2 where each row is the (x,y) coordinate of a specific point on the heatmap (x=column 1 and y=column 2). I also have an array of floats of size 1x200, which is the data I want to plot, I'll denote it as z. At each row of the coordinates array, the point (x,y) is associated with the value in z at the same index. I want to create a heatmap using this data.
I tried creating a meashgrid from the two columns of the coordinate array, but then I have this problem that z doesn't have the proper dimantions. I believe I need to create an array filed with zeros, and fill it with z values at the adequate coordinates, but than I have the problem that the coordinates are floats.
This is the code I used (which is of course problematic):
coords = load('grid_points.mat').array;
accuracies = load('test_accuracies.mat').array;
xcoord = coords(:,1);
ycoord = coords(:,2);
[X,Y] = meshgrid(xcoord,ycoord);
x = X(:); % Your varaible x should something like this as a column vector
y = Y(:); % Similar for variable y
z = accuracies(:); % Similar for variable z
tbl = table(x,y,z); % Combine them in a table
h = heatmap(tbl,'x','y','ColorVariable','z'); % Generate heat map
patial view of the coordinates array:
patial view of the data array:
I'd appreciate it if anyone could help me understand how can I overcome the fact that the coordinates array has floats in it (I don't want to convert it into integers, I want to keep it as floats if possible).
Thank you very much for your time and attention
KSSV on 6 Aug 2023
It depends on your data whether it is structured or unstructured. Let x, y, z be your column data vectors.
xi = unique(x) ; yi = unique(y) ;
[X,Y] = meshgrid(xi,yi) ;
Z = reshape(z,size(X)) ;
dt = delaunayTriangulation(x,y) ;
tri = dt.ConnectivityList ;