Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2007

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

Search the Archive

Re: WeightingFunction and Showing Graphs with wieghts as Edge Lable

  • To: mathgroup at smc.vnet.net
  • Subject: [mg83131] Re: WeightingFunction and Showing Graphs with wieghts as Edge Lable
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Mon, 12 Nov 2007 05:15:39 -0500 (EST)
  • Organization: The Open University, Milton Keynes, UK
  • References: <fh6d5q$4kr$1@smc.vnet.net>

mumat wrote:

<snip>

> Question 3. How can I graph a weighted Graph show the edgeweights show
> up on the graph? for instance for this graph?
> 
> In[1]=t = Wheel[8];k = SetEdgeWeights[t, WeightingFunction ->
> RandomInteger, WeightRange -> {0, 4}]
> 
> Any help would be greatly appreciated.

Arguably, the easiest way might be to use Mathematica 6 built-in 
function *GraphPlot*. It accepts a list of pair of the form (v_out -> 
v_in, "edge_label"}. So, using your graph k, we are interested in 
transforming its first element k[[1]], a list of lists of the form 
{{v_out, v_in}, EdgeWeight -> edge_weight} (see Out[4]), into the 
required format for GraphPlot. To do so, we just use a transformation 
rule that we apply to k[[1]] (see In[5]) before calling GraphPlot.

In[1]:= Needs["Combinatorica`"]
t = Wheel[8]; k =
  SetEdgeWeights[t,
   WeightingFunction -> (RandomChoice[{2, 3, 5, 7}] &)];
Edges[k, EdgeWeight];

In[4]:= k[[1]]

Out[4]= {{{1, 8}, EdgeWeight -> 3}, {{2, 8},
   EdgeWeight -> 5}, {{3, 8}, EdgeWeight -> 3}, {{4, 8},
   EdgeWeight -> 5}, {{5, 8}, EdgeWeight -> 7}, {{6, 8},
   EdgeWeight -> 3}, {{7, 8}, EdgeWeight -> 7}, {{1, 2},
   EdgeWeight -> 3}, {{2, 3}, EdgeWeight -> 3}, {{3, 4},
   EdgeWeight -> 7}, {{4, 5}, EdgeWeight -> 2}, {{5, 6},
   EdgeWeight -> 7}, {{6, 7}, EdgeWeight -> 2}, {{1, 7},
   EdgeWeight -> 2}}

In[5]:= k[[1]] /. {{p_Integer, q_Integer},
    EdgeWeight -> r_} :> {p -> q, ToString@r}

Out[5]= {{1 -> 8, "3"}, {2 -> 8, "5"}, {3 -> 8, "3"}, {4 -> 8,
   "5"}, {5 -> 8, "7"}, {6 -> 8, "3"}, {7 -> 8, "7"}, {1 -> 2,
   "3"}, {2 -> 3, "3"}, {3 -> 4, "7"}, {4 -> 5, "2"}, {5 -> 6,
   "7"}, {6 -> 7, "2"}, {1 -> 7, "2"}}

{{1 -> 8, "2"}, {2 -> 8, "2"}, {3 -> 8, "3"}, {4 -> 8, "5"}, {5 -> 8,
   "7"}, {6 -> 8, "3"}, {7 -> 8, "2"}, {1 -> 2, "3"}, {2 -> 3,
   "5"}, {3 -> 4, "5"}, {4 -> 5, "7"}, {5 -> 6, "7"}, {6 -> 7,
   "7"}, {1 -> 7, "3"}}

In[6]:= GraphPlot[%, VertexLabeling -> True]

(Deleted Out[6] that shows a nice plot of a graph with the weight of 
each edge and the vertex numbers.)

Regards,
-- 
Jean-Marc


  • Prev by Date: Re: greetings and a question!
  • Next by Date: Re: WeightingFunction and Showing Graphs with wieghts as Edge Lable
  • Previous by thread: WeightingFunction and Showing Graphs with wieghts as Edge Lable
  • Next by thread: Re: WeightingFunction and Showing Graphs with wieghts as Edge Lable