# NearestNeighborGraph doesn't show a 3D graph when one or more points are Integer and the rest are Decimal?

Bug introduced in 10.3 or earlier and persisting through 12.1.1

When all the points are the same kind, say Integer then NearestNeighborGraph will display a 3D graph when using {x,y,z} coordinates. However, when just one of those points is say a Decimal instead then one sees a 2D graph. It seems the reverse is true too. For example:

allIntegers = NearestNeighborGraph[{{0,0,0},{-1,1,1},{1,-1,1},{-1,-1,1},{1,1,1},{0,0,2},{0,0,1}},{All,2}];
allDecimals = NearestNeighborGraph[{{0.,0.,0.},{-1.,1.,1.},{1.,-1.,1.},{-1.,-1.,1.},{1.,1.,1.},{0.,0.,2.},{0.,0.,1.}},{All,2}];

oneInteger = NearestNeighborGraph[{{0,0.,0.},{-1.,1.,1.},{1.,-1.,1.},{-1.,-1.,1.},{1.,1.,1.},{0.,0.,2.},{0.,0.,1.}},{All,2}];
oneDecimal = NearestNeighborGraph[{{0.,0,0},{-1,1,1},{1,-1,1},{-1,-1,1},{1,1,1},{0,0,2},{0,0,1}},{All,2}];

Row[{allIntegers, allDecimals, oneInteger, oneDecimal}]


Displays:

Is there something I'm doing wrong or some parameter I need to pass? I'd like to be able to force 3D.

• I would call this a bug. Please report it to Wolfram. Note that this is not an official Wolfram website, so the issue won't come to their attention unless you report it. Nov 12 '20 at 10:24
• Bug reported, lets see what happens. Nov 12 '20 at 10:39

One possible workaround to this bug is to set VertexCoordinates explicitly.
pts = {{0., 0, 0}, {-1, 1, 1}, {1, -1, 1}, {-1, -1, 1}, {1, 1, 1}, {0, 0, 2}, {0, 0, 1}};