Re: changing style of vertices for ShowGraph with Combinatorica
- To: mathgroup at smc.vnet.net
- Subject: [mg86348] Re: [mg86332] changing style of vertices for ShowGraph with Combinatorica
- From: Murray Eisenberg <murray at math.umass.edu>
- Date: Sun, 9 Mar 2008 05:01:07 -0500 (EST)
- Organization: Mathematics & Statistics, Univ. of Mass./Amherst
- References: <200803070729.CAA19892@smc.vnet.net> <C63D1D41-0058-431D-A84D-4418E66DBF46@lse.ac.uk> <200803081044.FAA13587@smc.vnet.net> <C5476BB7-775D-44D1-8046-346E75B094A0@lse.ac.uk>
- Reply-to: murray at math.umass.edu
The first example profered shows precisely part of the difficulty: No edges are labeled! J. McKenzie Alexander wrote: > Setting the option VertexLabeling->True has no effect when a custom > definition is provided for VertexRenderingFunction, as VertexLabeling > only affects how the default rendering function draws the vertices. If > you want vertex labels provided you need to include that in the > definition of the custom rendering function. > > Look up the documentation for VertexRenderingFunction and > EdgeRenderingFunction to see what additional arguments are provided. The > first argument for VertexRenderingFunction is the position of the > vertex. The second argument is the label. So the following works: > > GraphPlot[Cycle[3], Method -> Automatic, VertexLabeling -> True, > EdgeLabeling -> True, EdgeRenderingFunction -> ({Black, Line[#1]} &), > VertexRenderingFunction -> ({EdgeForm[{Thickness[0.005], Red}], Yellow, > Disk[#1, 0.04], Black, Text[#2, #1]} &)] > > You can drop the option settings for VertexLabeling and EdgeLabeling and > get the same effect. > > As for whether GraphPlot plays well with the Combinatorica graph > structure, it does handle vertex labels correctly but not edge labels, > as the following example illustrates. I was personally surprised to > find that the edge labels were not passed to EdgeRenderingFunction. I > think this might be a bug. > > GraphPlot[ > Graph[{{{1, 2}, EdgeLabel -> "e1"}, {{2, 3}, EdgeLabel -> "e2"}, {{3, 1}, > EdgeLabel -> "e3"}}, > {{{-0.5, 0.866}, VertexLabel -> "a"}, > {{-0.5, -0.866}, VertexLabel -> "b"}, > {{1., 0}, VertexLabel -> "c"}}], > EdgeRenderingFunction -> ({Black, Line[#1], > Text[#3, Mean[#1]] > } &), > VertexRenderingFunction -> ({EdgeForm[{Thickness[0.005], Red}], Yellow, > Disk[#1, 0.04], Black, Text[#2, #1]} &)] > > Cheers, > > Jason > > On 8 Mar 2008, at 10:44, 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: >> >> 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 >> > > -- > Dr J. McKenzie Alexander > Department of Philosophy, Logic and Scientific Method > London School of Economics and Political Science > Houghton Street, London WC2A 2AE > > > > > 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
- Follow-Ups:
- Re: Re: changing style of vertices for ShowGraph with Combinatorica
- From: "J. McKenzie Alexander" <jalex@lse.ac.uk>
- Re: Re: changing style of vertices for ShowGraph with Combinatorica
- References:
- changing style of vertices for ShowGraph with Combinatorica
- From: Murray Eisenberg <murray@math.umass.edu>
- Re: changing style of vertices for ShowGraph with Combinatorica
- From: Murray Eisenberg <murray@math.umass.edu>
- changing style of vertices for ShowGraph with Combinatorica