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

MathGroup Archive 2008

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

Search the Archive

Re: Re: Re: EdgeRenderingFunction to

  • To: mathgroup at smc.vnet.net
  • Subject: [mg87867] Re: [mg87835] Re: [mg87670] Re: [mg87549] EdgeRenderingFunction to
  • From: Murray Eisenberg <murray at math.umass.edu>
  • Date: Sat, 19 Apr 2008 03:32:30 -0400 (EDT)
  • Organization: Mathematics & Statistics, Univ. of Mass./Amherst
  • References: <200804141914.m3EJEAKH027602@rcf1537-4.math.umass.edu> <200804150952.FAA25081@smc.vnet.net> <200804180640.CAA12631@smc.vnet.net>
  • Reply-to: murray at math.umass.edu

Sorry about the mistake:  Using characters as vertex labels here DOES 
work.  (I had forgotten to revert to the names that Carl Woll used for 
the utility functions when I tried to evaluate the second input 
expression shown below.)

But with a "catch": For this example, the edge labels of two of the 
edges are written to the same location, in the middle of the "X" inside 
the square, so that you see only one of them.  Unfortunately, the ruse 
of including the Method->"HighDimensionalEmbedding" and then manually 
dragging vertices around so as to reveal the hidden vertex is not 
available:  the VertexCoordinateRules option is not allowed here.

Murray Eisenberg wrote:
> I believe this method fails to preserve vertex coordinates from an 
> original Combinatorica Graph[...] object in case one changes the vertex 
> labels to, say, letters.  For example:
> 
>    g = SetEdgeLabels[SetVertexLabels[Wheel[4], Characters["1234"]],
>     Characters["defabc"]];
> 
>    GraphPlot[torules[g], EdgeLabeling -> True, VertexLabeling -> True,
>       VertexCoordinateRules -> getcoords[g]]
> 
> 
> Carl Woll wrote:
>> ... If you want to use my first method and maintain the vertex locations, 
>> then you need to include that information in the call to GraphPlot.
>>
>> Here is a function that creates the usual rule structure that GraphPlot 
>> expects from a Combinatorica graph (with vertex and edge labels):
>>
>> torules[Graph[edges_, vertices_, ___]] := Module[
>>     {vrules},
>>    
>>     vrules = DeleteCases[
>>         Thread[Range[Length[vertices]] -> (VertexLabel /. 
>> vertices[[All,2 ;;]])],
>>         _ -> VertexLabel
>>     ];
>>     Replace[
>>         Transpose[{Rule @@@ (edges[[All,1]] /. vrules), EdgeLabel /. 
>> edges[[All,2 ;;]]}],
>>         {a_, EdgeLabel} -> a,
>>         {1}
>>     ]
>> ]
>>
>> Here is a function that extracts coordinates from a Combinatorica graph:
>>
>> getcoords[Graph[edges_, vertices_, ___]] := 
>> Thread[Rule[Range[Length[vertices]], vertices[[All, 1]]]]
>>
>> So, let's create a graph with edge and vertex labels:
>>
>> g = SetEdgeLabels[SetVertexLabels[Cycle[3], {a, b, c}], {x, y, z}];
>>
>> Now, we'll use GraphPlot to view the graph:
>>
>> GraphPlot[torules[g], EdgeLabeling->True, VertexLabeling->True, 
>> VertexCoordinateRules->getcoords[g]]
> 

-- 
Murray Eisenberg                     murray at math.umass.edu
Mathematics & Statistics Dept.
Lederle Graduate Research Tower      phone 413 549-1020 (H)
University of Massachusetts                413 545-2859 (W)
710 North Pleasant Street            fax   413 545-1801
Amherst, MA 01003-9305


  • Prev by Date: Re: Re: Abs[x] function
  • Next by Date: Re: Re: EdgeRenderingFunction to produce edge
  • Previous by thread: Re: Re: EdgeRenderingFunction to produce edge
  • Next by thread: Re: Re: EdgeRenderingFunction to produce edge