Re: TreePlot
- To: mathgroup at smc.vnet.net
- Subject: [mg132392] Re: TreePlot
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Sat, 8 Mar 2014 02:42:10 -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>
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>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