[Date Index]
[Thread Index]
[Author Index]
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**
| |