MathGroup Archive 2014

[Date Index] [Thread Index] [Author Index]

Search the Archive

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>
  • Prev by Date: WildCats version 0.70 released
  • Next by Date: Do we need a When function?
  • Previous by thread: TreePlot
  • Next by thread: Re: TreePlot