Your problem is one of definition. Until you do that, i.e., define what you mean by "middle", you can do nothing.
In fact, there are infinitely many lines that will pass through the mean of your data. Surely that is a good definition of "middle". We could equally easily define the "middle" as a line that has 50% of the points on either side of the line. Whoops, again, infinitely many such potential lines.
You seem to be drawing a line that is essentially a line of symmetry. But you never said anything at all about that. Sadly, that is only a line of approximate symmetry in both cases. The problem is the eye is good at seeing patterns like that. Computers? Not really. You need to tell them carefully and accurately what you mean, which essentially involves code.
So, are you looking for a line of symmetry? Must the line pass through two of the points? (It does not appear you have drawn them like that.) So, now you have an extra problem, in that you also need to learn to interpolate such a curve.
Next, is this set of points a completely scattered one, in that they are provided in random order? Or do you have them in sequence around the circumference of this cloud, essentially as a polygon? I loaded one of those files. They are scattered. So worse yet, while your eye easily sees this as a heart shaped curve, the computer just sees a cloud. Again, that makes it a more difficult problem. Is it a solvable problem? Probably.
Finally, are these point clouds as you have shown them similar to the REAL problem you are facing, or have you just drawn a couple of nice examples? Is 200 points or so a reasonable estimate of the real problems you will face? Or may you have 200000 points some times?
Addendum: Assuming your question is really as I think it is...
How might I solve the problem of finding a line of approximate symmetry?
I'd start by sorting the points in order, IF possible. Since your data seems to be simply deformable to a circle, polar coordinates is a good way to do that.
x = data1(:,1);
y = data1(:,2);
plot(x,y,'-o')
% So random order initially.
[theta,r] = cart2pol(x-mean(x),y-mean(y));
[theta,thetatags] = sort(theta);
x = x(thetatags);
y = y(thetatags);
plot(x,y,'-o')
grid on
axis equal
A traveling salesman solver would help in worse cases, finding the shortest path to traverse between the list of points. But we don't need anything like that for these simple cases.
How might I find a line of symmetry?
Simplest seems to write a function that would accept any two points around the curve, which would define a line. Then take all points on ONE side of the line. Create a curve from them. Next, all points on the other side of the line would get mirrored across the line. Find the closest point on the curve to those mirror images, summing up all of the distances.
Finally, I would use an optimizer to find the BEST two such points, such that the total mirrored sum of distances is minimum.
I'm not going to write that code, or even give you any more depth in it than this without validation of my wild guesses.