How to get heatmap values in appdesigner?
10 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Csanad Levente Balogh
el 23 de Feb. de 2021
Comentada: Csanad Levente Balogh
el 9 de Oct. de 2021
Hi All!
I'm building an app, and I am using heatmap to visualize some data. I am plotting heatmap on a Panel. When I click on a cell of heatmap, it displays X and Y values. For further calculations I want to extract which cell the user clicked on. So what I need basically, is that when the user clicks on one of the heatmap cells fome function registers the coordinates (X,Y values) of the cell that have been clicked on. I don't know if it is possible with heatmap. Maybe there are other plot types with which it is easier to implement. Any solutions or siggestions?
3 comentarios
Adam Danz
el 13 de Ag. de 2021
It would be simple but accessing the datacursor in heatmap is not simple and replacing it with a customizable datatip is still not supported to my knowledge. heatmap is notoriously difficult to customize and it's often necessary to use alternatives such as imagesc or histogram2 or surf to achieve customization.
Dave B's approach below (also see comments under that answer) is a simple alternative.
Respuesta aceptada
Dave B
el 13 de Ag. de 2021
Editada: Dave B
el 13 de Ag. de 2021
Is this the sort of thing you're looking for?
h=imagesc(rand(5,7));
h.ButtonDownFcn=@(~,hit)disp(round(hit.IntersectionPoint(1:2)));
Note that this disp is just for testing, you'd probably do something more interesting there, and if it was more than a single line you can just pass in a function (or more likely method on your app) like any other callback.
6 comentarios
Adam Danz
el 13 de Ag. de 2021
Yeah, the euclidean distance to grid centers in my comment (using hypot) isn't necessary and the first two lines in your comment above are more efficient. But since the OP wants to return the indicies rather than the X/YData, the last two lines in your comment above are not needed. Actually, I believe xind and yind are the solutions so it's much easier than my approach.
I also realized that my approach (and this one) isn't reliable for non-uniform grids as I incorrectly claimed in my solution. Imagine clicking within a large grid cell very close to a border and the bordering cell is very narrow. The click location would be closer to the neighboring grid cell center than it would be to the center of the larger cell that contained the click. But this doesn't matter if the user is trying to replicate heatmap since that function does not produce non-uniform grids.
The solution to support non-uniform grids would require pairs of <=, > conditions for x and y coordinates or a more fancy and probably less-efficient point-in-polygon approach.
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!