Extract brushed data programmatically
43 visualizaciones (últimos 30 días)
Scott Smith el 17 de Mayo de 2023
Hi everyone smarter than me, (Upfront--> Can I get some Matlab Engineer/Guru eyes on this ?)
I'm looking to extract exactly WHICH data points have been brushed by the user in a scatter plot.
Clearly this is tracked somewhere, because if you right click the plot you can
- Export the brushed data to a variable
- Delete brushed/unbrushed points
- Copy to the command line
How can I get that list of brushed data programmatically?
My ultimate goal is to brush a linked set of scatter plots, but but a first step is to just select a collection of points, and get a logical selection out again.
I'd like to hook into the pre-built work Matlab engineers have done, rather than home brew a janky and slow version.
Does anyone know where Matlab keeps this secret sauce?
Here's what I've tried so far
My best guess starting point is using the struct() function to display hidden internal properties of the brush object.
However, despite the new field "ModeHandle", I can't find what I'm after once I've done that.
Example of my flow:
% make a scatter plot
x = 0.1:0.1:100;
y = sin(x)./x;
b = brush; % make the brush object
b.Enable = 'on' % enable brushing
Off I go to brush (see photo above)
Now expose the hidden brush object
b2 = struct(b); % Make brush object show all hidden properties
ModeHandle field appears, but I can't seem to find where the brushed points/ properies are.
I've delved deep into ModeHandle, with no luck.
Any help navigating the ModeHandle field would be appreciated.
Adam Danz el 18 de Mayo de 2023
To get the coordinates of selected data points, you can follow the example in this answer.
That answer shows that BrushData is a property of the object that has been brushed and contains a logical index of the data points that were selected. You can use this logical index to extract the coordinates from the XData, YData, ZData properties (for most graphics objects).