MATLAB Answers

How to get brushed data point index from Plot?

15 views (last 30 days)
MJ on 30 Jul 2021
Edited: Adam Danz on 3 Aug 2021
The following linked post was incredibly helpful for me but I would like to know how to obtain the indicies of the brushed data. I'm not sure why, but the size of Pos and the size of brush are different. I want to obtain the indicies in Pos of the brushed data. Thank you.
Handle = plot3(Pos(:,1),Pos(:,2),Pos(:,3), 'o');
axis equal;
brush on
Select the required data and run the following to get the brushed points:
xd = get(Handle, 'XData');
yd = get(Handle, 'YData');
zd = get(Handle, 'ZData');
brush = get(Handle, 'BrushData');
brushed_x = xd(logical(brush));
brushed_y = yd(logical(brush));
brushed_z = zd(logical(brush));
figure, plot3(brushed_x, brushed_y, brushed_z, 'o');

Accepted Answer

Adam Danz
Adam Danz on 31 Jul 2021
Edited: Adam Danz on 3 Aug 2021
Continuing from your code...
brushedPoints = [brushed_x(:), brushed_y(:), brushed_z(:)];
dist = pdist2([xd(:),yd(:),zd(:)], brushedPoints);
[~, idx] = min(dist)
idx(i) is the index for brushedPoints(i,:).

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by