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