Re: TreePlot
- To: mathgroup at smc.vnet.net
- Subject: [mg132395] Re: TreePlot
- From: Marco Gabiccini <m.gabiccini at ing.unipi.it>
- Date: Sat, 8 Mar 2014 02:43:11 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20140306070605.915576A18@smc.vnet.net> <CAEtRDSe1sq=fLwbX0iiXjzE+H3tiTNCxzJ7FGvDDK+9TzkbzqA@mail.gmail.com>
Dear Bob, thanks for the precious help. Indeed an elegant and practical solution. Best, Marco Il 06/03/2014 15:19, Bob Hanlon ha scritto: > > Add a frame to the edge labels. > > > treeStructure = {{0, 1}, {1, 2}, {1, 3}, {3, 5}, > {0, 4}, {4, 6}, {4, 7}, {4, 8}}; > > > jointList = Map[Last, treeStructure]; > > > edgeList = Thread[ > (DirectedEdge @@@ treeStructure) -> > (Framed[#, FrameStyle -> White, > Background -> White] & /@ > jointList)]; > > > g = TreeGraph[ > DirectedEdge @@@ treeStructure, > VertexLabels -> Placed["Name", After], > GraphRoot -> 0, > EdgeLabels -> edgeList, > VertexSize -> 0.15, > EdgeStyle -> Thick, > EdgeLabelStyle -> Directive[Red, Bold, 16], > VertexLabelStyle -> Directive[Black, 14], > ImagePadding -> 20, > GraphHighlight -> {0}, > GraphHighlightStyle -> "DehighlightGray"] > > > To grow from the bottom, suppress the display of g (use ;) and use its > VertexCoordinates to draw an inverted graph. > > > g2 = TreeGraph[ > DirectedEdge @@@ treeStructure, > VertexLabels -> Placed["Name", After], > GraphRoot -> 0, EdgeLabels -> edgeList, > VertexSize -> 0.15, EdgeStyle -> Thick, > EdgeLabelStyle -> Directive[Red, Bold, 16], > VertexLabelStyle -> Directive[Black, 14], > ImagePadding -> 20, > GraphHighlight -> {0}, > GraphHighlightStyle -> "DehighlightGray", > VertexCoordinates -> ((VertexCoordinates /. > AbsoluteOptions[g, VertexCoordinates]) /. > {x_, y_} -> {x, -y})] > > > > Bob Hanlon > > > > > On Thu, Mar 6, 2014 at 2:06 AM, Marco Gabiccini > <m.gabiccini at ing.unipi.it <mailto:m.gabiccini at ing.unipi.it>> wrote: > > Dear all, > > I am trying to obtain a nice visualization of generic trees in > Mathematica for mechanism analysis. > > I have been able to use something like: > > treeStructure = {{0, 1}, {1, 2}, {1, 3}, {3, 5}, {0, 4}, {4, 6}, {4, > 7}, {4, 8}}; > > jointList = Map[Last, treeStructure]; > > edgeList = MapThread[Rule, > {Map[DirectedEdge @@ # &, treeStructure], > jointList} > ]; > > g = TreeGraph[ > Map[DirectedEdge @@ # &, treeStructure], > VertexLabels -> "Name", > GraphRoot -> 0, > EdgeLabels -> edgeList, > VertexSize -> 0.15, EdgeStyle -> Thick, > EdgeLabelStyle -> Directive[Red, Bold, 16], > VertexLabelStyle -> Directive[Black, 14]] > > and all is fine. However, I was trying to exploit the apparently more > freedom given by the command TreePlot, e.g. to create a small white > frame behind the names of the edges so that the text does not collide > with the edge itself, have the tree grow from the bottom up, etc., > but > I am facing the problem that it seems that TreePlot overrides the > names > given to the nodes (e.g, my root node must be zero and it is > automatically renamed 1) and there seems to be no smart function like > that is TreeGraph VertexLabels->"Name". > > Any hint about how the get, at the same time, the best of both > commands? > Or, at least, have a better visualization using TreeGraph? > > Thanks, > > Marco > >
- References:
- TreePlot
- From: Marco Gabiccini <m.gabiccini@ing.unipi.it>
- TreePlot