
How do I interact with heatmaps?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Alex Imaz
am 21 Dez. 2021
Beantwortet: Cris LaPierre
am 21 Dez. 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 Kommentare
Akzeptierte Antwort
Cris LaPierre
am 21 Dez. 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Data Distribution Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!