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