# Draw lines between all neighbours

I have seen this question, but what I want is a bit different.

I have a set of data (blue points) and I would like to end up with something like this:

,

i.e. joining each site with all its (nearest) neighbours.

The order of the data points is random so if I just do Joined->True it plots lines at random.

I know I can use Nearest[], so I added a line

x0 = Neartest[data]


which outputs a set of sets of numbers (the nearest neighbours), but am not quite sure how to plot that on top of the original points WITH segments in between.

Any pointers?

Thanks

if you want, the data is:

data= Uncompress@Import["http://pastebin.com/raw.php?i=qvMp8BNv"]

• Look up DelaunayMesh[]. Nov 12, 2015 at 13:12
• What exactly do you means by "all its nearest neighbors"? It is important to define this precisely. If you connect each dot to the one that is closes to it, you will not end up with the sort of figure you have drawn. Typically each dot will have a single nearest neighbour. BTW NearestNeighborGraph will do just that. Nov 12, 2015 at 13:15
• Yeah I realise that's a bit misleading sorry. I meant all the points around a given datum... Nov 12, 2015 at 13:31
• I think DelaunayMesh is the one I want. By chance, is there any way of telling it what polygons to fit? Eg. "only try to draw pentagons" Nov 12, 2015 at 14:01
• I don't think that it does, since it performs a Delaunay triangulation which exclusively generates triangles. Nov 12, 2015 at 15:44

here is the nearest neighbors plot:

pts = RandomReal[{-1, 1}, {200, 2}];
near = Nearest[pts];
Graphics[{Function[{pt}, Line[{pt, #}] & /@ near[pt, {5, .2}]] /@ pts,
PointSize[.015], Red, Point@pts}]


this is up to 5 near neighbors within radius of .2..

for comparison DelaunayMesh[pts]

• The comparison is a good hint.
– user9660
Nov 12, 2015 at 19:15