
How do I interact with heatmaps?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Alex Imaz
el 21 de Dic. de 2021
Respondida: Cris LaPierre
el 21 de Dic. de 2021
Hello
In matlab appDesigner I have a heatmap assigned to a UIFigure:
h = heatmap(app.UIFigure,Matrix)
I would like to create a function that gives as a result the coordinates of a selected pixel. For example, if I have this heatmap
Matrix = [1 2 3
4 5 6
7 8 9]
and I click in the heatmap the pixel corresponding to the number 6, I would like to receive a [2,3]. Is it possible?
0 comentarios
Respuesta aceptada
Cris LaPierre
el 21 de Dic. de 2021
A possible workaround is to create the same visualization using imagesc (code shared in linked post). You can use the ButtonDown callback function to get the (x,y) coordinates of the cursor when you left click on the axes (see this answer for more details on how to set this up).
The final process is to do some maniputation of the cursor (x,y) to get the corresponding (row, column) of the heatmap.
Here's the code I came up with. Note that I put the code to create the heatmap in my app's StartupFcn callback.
% Code that executes after component creation
function startupFcn(app)
% create heatmap
Matrix = [1 2 3
4 5 6
7 8 9];
imagesc(app.UIAxes,Matrix,"HitTest","off")
% set colormap to match that of a heatmap
C = [0.9000 0.9447 0.9741
0 0.4470 0.7410];
cmap = interp1([1 256],C,1:256);
colormap(app.UIAxes,cmap)
colorbar(app.UIAxes)
% Add text labels to each box
[x,y] = meshgrid(1:length(Matrix));
labels = num2str(Matrix(:));
text(app.UIAxes,x(:),y(:),labels);
% Set X and Y axes tick locations
xticks(app.UIAxes,1:length(Matrix))
yticks(app.UIAxes,1:length(Matrix))
end
% Button down function: UIAxes
function UIAxesButtonDown(app, event)
% extract (y x) to get (row,column).
% Addition combined with floor returns pixel (R,C)
bx = floor(event.IntersectionPoint([2 1]) + .5)
end
When I run the app and click on 6, the value of bx displays in the command window.

0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Data Distribution Plots en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!