Re: How to plot a graph, using a distance matrix
- To: mathgroup at smc.vnet.net
- Subject: [mg89034] Re: [mg88993] How to plot a graph, using a distance matrix
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Sat, 24 May 2008 03:53:50 -0400 (EDT)
- References: <200805230707.DAA25775@smc.vnet.net>
Eric Heiman wrote:
> My dilemna is as such:
>
> I have a matrix (it happens to be 21x21, but don't worry about that) which contains distances between points.
> So column 1 has distances from point 1 to every other point, with row 1 being 0 (because the distance to itself is zero).
>
> What I am wondering is how I would be able to get mathematica to plot a graph of these points.
>
> Thanks in advance!
You can use ListPlot, once you have good placement of the points. To get
this you might proceed as follows.
Put your first point at the origin, and your second point on the
positive x axis, with coordinate specified by mat[[1,2]] (call the
coordinates {x2,0} for use below. That is, x2=mat[[1,2]]). Give your
third point the positive y3 solution to the two equations given by
Norm[{x3,y3}]^2 - mat[[1,3]]^2 == 0
Norm[{x3,y3}-{x2,0}]^2 - mat[[2,3]] == 0
You now have located three points. For subsequent points 3<j<=21 you
would do similarly, in first solving pairs of quadratics
Norm[{xj,yj}]^2 - mat[[1,j]]^2 == 0
Norm[{xj,yj}-{x2,0}]^2 - mat[[2,j]] == 0
Of the two solutions, take the one that comes closest to making the
distances to already placed points correct.
If you require really careful layout you might use the point coordinates
as found above as initial values for a least squares optimization. Once
you place those first two points, your other distances give an
overdetermined system of equations (171, if I am counting correctly) in
38 unknowns.
Daniel Lichtblau
Wolfram Research
- References:
- How to plot a graph, using a distance matrix
- From: Eric Heiman <eheiman@mailinator.com>
- How to plot a graph, using a distance matrix