Selecting points on either side of a curve
Selecting points on either side of a curve
I have the following array of data. Suppose I want only to keep data within the two lines. I can achieve my result using the following code:
data = Table[i, RandomReal[-10, 10], i, 0, 100];
line1[x_] := 0.1 x - 10;
line2[x_] := -0.1 x + 10;

rf = RegionMember[Polygon[0, line1[0], 0, line2[0], 100,line1[100]]];
bool1 = rf[data];
notbool1 = Not[#] & /@ bool1
datain = Pick[data, bool1];
dataout = Pick[data, notbool1];
This has the desired effect.

Now suppose I only have one line, since I can't make a closed region what would be the best way to select points either above or below a line? What if the curve is not a straight line? Any ideas?
$begingroup$
Pick[data, RegionMember[HalfPlane[line1[0], line1[1], 0, -1], data]]$endgroup$
– Michael E2
Sep 10 '18 at 16:09
Pick[data, RegionMember[HalfPlane[line1[0], line1[1], 0, -1], data]]
2 Answers
2
Some knowledge about (planar) analytic geometry facilitates this problem. Suppose now you only have line1, this
line1
Select[data, line1[ #[[1]] ] < #[[2]] &]
selects out the points above line1; the key lies in the inequality. If it is connected by >, then the points below line1 you will get.
line1
>
line1
in, out = GeneralUtilities`SelectDiscard[data, line1[#[[1]]]<=#[[2]]<=line2[#[[1]]]&];
Show[ListPlot[in, out, PlotStyle -> Green, Red],
Plot[line1@x, line2@x, x, 0, 100,
Filling -> 1 -> 2, Opacity[.5, LightBlue], None]]

above1, below1 = GeneralUtilities`SelectDiscard[data, line1[#[[1]]] <= #[[2]] &];
above2, below2 = GeneralUtilities`SelectDiscard[data, line2[#[[1]]] <= #[[2]] &];
plt1, plt2 = Show[ListPlot[#, PlotStyle -> Green, Red],
Plot[line1@x, line2@x, x, 0, 100,
Filling -> 1 -> 2, Opacity[.5, LightBlue], None]] & /@
above1,below1, above2, below2 ;
Row[plt1, plt2, Spacer[5]]

Thanks for contributing an answer to Mathematica Stack Exchange!
But avoid …
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Required, but never shown
Required, but never shown
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.
$begingroup$
Related: mathematica.stackexchange.com/questions/97299/…
$endgroup$
– Michael E2
Sep 10 '18 at 16:04