How do I get the brush tool to ignore points?

1 view (last 30 days)
Let's say I have a single figure with multiple line or scatter objects sharing the same axis.
I would like to use the brush tool to select points only from some subset of those objects. e.g. I want to use the brush tool to select the blue points and not the green points.
Can I do this?
If not, is there an alternative way to allow a user to select groups of points on a plots and use that data programatically that would disallow the selecting of certain points?

Answers (1)

Kevin Holly
Kevin Holly on 19 Oct 2021
hold on
Right Click and select "Export Brushed..."
Select data you are interested in and select "OK"
Choose variable name for the data.
  1 Comment
millercommamatt on 19 Oct 2021
Is there an option where the brush tool will never capture those points in the first place? I'm trying to do this without user interaction?
In thinking about this more, I realized that I could have the brush.ActionPostCallback function set the BrushData property back to all zeros for the scatter handles I don't want selected.
fh = figure();
ah1 = scatter(rand(20,1),rand(20,1),'g');
hold on
ah2 = scatter(rand(20,1),rand(20,1),'b');
bh = brush(fh);
bh.ActionPostCallback = @ignoreGreen;
% Callback for after the brush action has been completed
function ignoreGreen(~,eventdata)
% Extract plotted graphics objects
% Invert order because "Children" property is in reversed plotting order
hLines = flipud(eventdata.Axes.Children);
hLines(1).BrushData = hLines(1).BrushData .* 0;
Still, this is confusing for the user, becase as they're dragging the selection box, the green points will appear selected until the user lets go of the mouse button.

Sign in to comment.





Community Treasure Hunt

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

Start Hunting!