Re: changing style of vertices for ShowGraph with Combinatorica
- To: mathgroup at smc.vnet.net
- Subject: [mg86358] Re: changing style of vertices for ShowGraph with Combinatorica
- From: Helen Read <hpr at together.net>
- Date: Sun, 9 Mar 2008 05:03:26 -0500 (EST)
- References: <fqqrql$k9j$1@smc.vnet.net> <fqtqek$cuk$1@smc.vnet.net>
- Reply-to: HPR <read at math.uvm.edu>
Steve Luttrell wrote:
>
> "Murray Eisenberg" <murray at math.umass.edu> 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]]
>
> You could use the native GraphPlot function to plot your
> Combinatorica-defined graph as follows:
>
> Needs["Combinatorica`"]
>
> g = Cycle[3];
>
> GraphPlot[g,
> VertexRenderingFunction -> ({EdgeForm[{Thick, Red}],
> FaceForm[Yellow], Disk[#1, 0.05], Text[#2, #1]} &)]
The native GraphData knows all kinds of graphs, without the need for
loading the Combinatorica package.
For instance, this plots the 3-cycle.
GraphData["TriangleGraph"]
If you want to format it with GraphPlot as Steve Lutrell suggests above,
the documentation suggests getting the EdgeRules from the GraphData.
GraphPlot[GraphData["TriangleGraph", "EdgeRules"],
VertexRenderingFunction -> ({EdgeForm[{Thick, Red}],
FaceForm[Yellow], Disk[#1, 0.05], Text[#2, #1]} &)]
However -- and this goes to Murray's comment in another post about this
being a little "half-baked" -- try the following.
GraphData["PetersenGraph"] (* the "popular" rendering of the Petersen
graph *)
GraphData["PetersenGraph", "AllImages"] (* all available images of
Petersen *)
Now try using the edge rules and plotting with some formatting in GraphPlot:
GraphPlot[GraphData["PetersenGraph", "EdgeRules"],
VertexRenderingFunction -> ({EdgeForm[{Thick, Red}],
FaceForm[Yellow], Disk[#1, 0.05], Text[#2, #1]} &),
EdgeRenderingFunction -> ({Blue, Line[#1]} &)]
Now we get a different rendering of the Petersen graph. So we need to
get the VertexCoordinateRules too:
pete = GraphData[
"PetersenGraph", {"EdgeRules", "VertexCoordinateRules"}];
GraphPlot[pete[[1]], VertexCoordinateRules -> pete[[2]],
VertexRenderingFunction -> ({EdgeForm[{Thick, Red}],
FaceForm[Yellow], Disk[#1, 0.1], Text[#2, #1]} &),
EdgeRenderingFunction -> ({Blue, Line[#1]} &)]
It would be nice if GraphData would accept formatting directly, so one
would not need to stand on one's head to do this.
--
Helen Read
University of Vermont