MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: A newbee to Mathematica

  • To: mathgroup at smc.vnet.net
  • Subject: [mg97521] Re: A newbee to Mathematica
  • From: Dana DeLouis <dana01 at me.com>
  • Date: Sat, 14 Mar 2009 18:13:47 -0500 (EST)

 >> showing the weights of each edge as is provided in  
FromAdjacencyMatrix[g,Edgeweight]

Hi.  I may be wrong, but I believe you have a "Directed" graph.   
Meaning that from 1-7 the weight is 2, but from 7-1 the weight is 1.   
I'm am not sure how you want to label this when you have different  
weights in different directions.  Again, I may be wrong.

am // MatrixForm

{1,0,1,2,0,1,2}
{0,0,0,0,1,1,1}
{1,0,0,1,1,1,1}
{0,3,1,4,1,0,1}
{0,1,1,1,0,1,0}
{1,1,1,0,1,0,0}
{1,1,5,1,0,0,0}


When you do..

g = FromAdjacencyMatrix[am, EdgeWeight];
GraphPlot3D[g, VertexLabeling -> True];

The graph does not show a link between 2 & 4.
Although there is a '0 between 2 & 4, there is a '3 between 4 & 2.

This shows the link between 2 & 4. (no double call to   
"FromAdjacencyMatrix".  I think  help is a little unclear in 7.0)

GraphPlot3D[am, VertexLabeling -> True]


Just throwing out some additional options:

g = FromAdjacencyMatrix[am /. 0 -> \[Infinity], EdgeWeight];

g = SetEdgeLabels[g, GetEdgeWeights[g]];

ops = {VertexColor -> Red, VertexLabelColor -> Blue,
    VertexLabel -> True, EdgeLabel -> True, ImageSize -> 600};

ShowGraph[g, Sequence @@ ops]


Note that because this is undirected, the label from 3-7 is "1", but  
the label from 7-3 of "5" was discarded.  I'm not sure how you want to  
really label these edges.



If you want, remove self-loops...

ShowGraph[MakeSimple[g], Sequence @@ ops]

One can see the one-way relationships between 1&4, and 2&4 with  
something like this...

g = FromAdjacencyMatrix[am /. 0 -> \[Infinity], EdgeWeight,
    Type -> Directed];
ShowGraph[g, VertexLabel -> True]

Again, just some additional ideas.
= = = = =
HTH :>)
Dana DeLouis


Nishant wrote:
 > Hi I have just started using mathematica,and therefore have a very  
silly question that needs an answer.
 > I am trying to run this:
 > Needs["GraphUtilities`"]
 > Needs["Combinatorica`"]
 > am = {{1, 0, 1, 2, 0, 1, 2}, {0, 0, 0, 0, 1, 1, 1}, {1, 0, 0, 1, 1,  
1,
 >      1}, {0, 3, 1, 4, 1, 0, 1}, {0, 1, 1, 1, 0, 1, 0}, {1, 1, 1, 0,  
1,
 >      0, 0}, {1, 1, 5, 1, 0, 0, 0}};
 >
 > MatrixForm[am]
 > g[FromAdjacencyMatrix[am, EdgeWeight], VertexLabeling -> True,
 >  EdgeLabeling -> True]
 > GraphPlot3D[g]
 > I am getting this error message:
 > GraphPlot3D::grph:Graph:<11,7,Undirected> is not a valid graph.
 >
 > BASICALLY what I want to do is to generate a 3d graph from a given  
adjacency matrix,with the elements of the matrix showing the weights  
of each edge as is provided in FromAdjacencyMatrix[g,Edgeweight]
 >
 > Thank you for helping me out



  • Prev by Date: Re: Comparing Corresponding Columns of Two Matrices
  • Next by Date: Re: Function as return value, how to document it (::usage)
  • Previous by thread: Re: A newbee to Mathematica
  • Next by thread: Wolfram/Alpha