MathGroup Archive 2008

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

Search the Archive

Re: Re: Re: changing style of vertices


But how do I get GraphPlot to use labels that _I_ specify, rather than 
numbers -- when using a graph created with Combinatorica and without 
having to directly specify the labels as part of the graph structure.

For example:

   g=Cycle[6];

   GraphPlot[g,
     VertexLabeling->True,VertexRenderingFunction->(Text[...]&)]

This sort of thing doesn't produce any vertex labels even if I first use 
something like:

   g = SetGraphOptions[g, VertexLabel -> Characters["b,a,f,e,d,c"]];

(Comment:  The documentation about graph display is really atrociously 
inadequate!)

Carl Woll wrote:
> Murray Eisenberg wrote:
> 
>> Yes, GraphPlot seems to permit making nice vertices (or edges), but then 
>> the labeling -- either with a Graph object from Combinatorica or just 
>> the kind of graph described by the GraphPlot reference page -- does not 
>> seem to admit vertex labels or edge labels, at least so far as I can 
>> see.  For example, neither of the following displays either vertex 
>> labels or edge labels:
>>
>>
>> GraphPlot[Cycle[3], Method -> Automatic, VertexLabeling -> True,
>>  EdgeLabeling -> True, EdgeRenderingFunction -> ({Black, Line[#1]} &),
>>   VertexRenderingFunction -> ({EdgeForm[{Thickness[0.005], Red}],
>>      Yellow, Disk[#1, 0.04]} &)]
>>
>> GraphPlot[{{v1 -> v2, "a"}, {v2 -> v3, "b"}, {v3 -> v1, "c"}},
>>  Method -> Automatic, VertexLabeling -> True, EdgeLabeling -> True,
>>  EdgeRenderingFunction -> ({Black, Line[#1]} &),
>>  VertexRenderingFunction -> ({EdgeForm[{Thickness[0.005], Red}],
>>      Yellow, Disk[#1, 0.04]} &)]
>>
>> On the other hand, if I remove he VertexRenderingFunction option, I do 
>> see vertex labels on the default (yellow boxes) vertex shapes:
>>  
>>
>  From the help for VertexLabeling:
> 
> "Any explicit setting for VertexRenderingFunction overrides the setting 
> for VertexLabeling."
> 
> Similarly for EdgeLabeling.
> 
> If you want labels when using VertexRenderingFunction, you need to put 
> them in explicitly in the VertexRenderingFunction rhs. The first example 
> in the VertexRenderingFunction function page does this.
> 
> If you want to recreate the default labeling inside 
> VertexRenderingFunction, the following may help:
> 
> VertexRenderingFunction -> (Text[
>       Framed[#2, {Background -> RGBColor[1, 1, .8], FrameStyle -> 
> RGBColor[.94, .85, .36], FrameMargins -> Automatic}], #] &)]
> 
> Carl Woll
> Wolfram Research
> 
>>  GraphPlot[{v1 -> v2, "a"}, {v2 -> v3, "b"}, {v3 -> v1, "c"}},
>>   Method -> Automatic, VertexLabeling -> True,
>>    EdgeLabeling -> True, EdgeRenderingFunction -> ({Black, Line[#1]} &)]
>>
>> GraphPlot[Cycle[3], Method -> Automatic, VertexLabeling -> True,
>>  EdgeLabeling -> True, EdgeRenderingFunction -> ({Black, Line[#1]} &)]
>>
>> Of course this now defeats the purpose of using GraphPlot so as to get 
>> exactly the kind of vertex shapes that VertexRenderingFunction, above, 
>> provides.
>>
>> Similarly with EdgeRenderingFunction.
>>
>> The kernel function GraphPlot doesn't seem to mesh very well with 
>> Combinatorica's graph functions.  This all still seems only "half-baked".
>>
>>
>> J. McKenzie Alexander wrote:
>>  
>>
>>> Take a look at GraphPlot, the graph rendering function that is built 
>>> into the Mathematica kernel.  I switched from using ShowGraph to 
>>> GraphPlot after realising that it was (a) faster and (b) easier to 
>>> customise.  Here's what you want:
>>>
>>> GraphPlot[
>>> Cycle[3],
>>> Method -> None,
>>> EdgeRenderingFunction -> ({Black, Line[#1]} &),
>>> VertexRenderingFunction -> ({EdgeForm[{Thickness[0.005], Red}], Yellow,
>>>     Disk[#1, 0.04]} &)
>>> ]
>>>
>>> You need to specify Method->None, otherwise GraphPlot will override the 
>>> specified positions of the vertices in the graph and use its own default 
>>> vertex positioning algorithm.
>>>
>>> VertexRenderingFunction is what you need to define in order to customise 
>>> the appearance of the vertices.
>>>
>>> I provided a definition of EdgeRenderingFunction just so that the edges 
>>> are rendered in the same way as ShowGraph.
>>>
>>> Cheers,
>>>
>>> Jason
>>>
>>> -- 
>>> J. McKenzie Alexander
>>> Department of Philosophy, Logic and Scientific Method
>>> London School of Economics and Political Science
>>> Houghton Street, London WC2A 2AE
>>>
>>>
>>> On 7 Mar 2008, at 07:29, Murray Eisenberg wrote:
>>>
>>>    
>>>
>>>> With Mathematica 6, I can change the default style (medium black disk)
>>>> for rendering the vertices of a Combinatorica Graph like this:
>>>>
>>>>  Needs["Combinatorica`"]
>>>>
>>>>  g = Cycle[3];
>>>>  ShowGraph[g, VertexStyle -> Disk[Large], VertexColor -> Red]
>>>>
>>>> But how can I, for example, change the vertex style so it is, say, a
>>>> large yellow disk with a thick red boundary?  Or even just change it to
>>>> be a circle?  I tried "obvious" things like the following, but they
>>>> cause errors:
>>>>
>>>>  ShowGraph[g, VertexStyle -> Graphics[Circle[], ImageSize -> 20]]
>>>>
>>>> -- 
>>>> 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
>>>>
>>>>      
>>>>
>>>
>>>
>>>
>>> Please access the attached hyperlink for an important electronic 
>>> communications disclaimer: 
>>> http://www.lse.ac.uk/collections/secretariat/legal/disclaimer.htm
>>>
>>>    
>>>
>>  
>>
> 
> 

-- 
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: Re: smallest fraction
  • Next by Date: Re: Collect coefficients of array variables during calculation:
  • Previous by thread: Re: Re: changing style of vertices for ShowGraph
  • Next by thread: Re: Re: Re: Re: changing