Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.soft-sys.math.mathematica > #16616

Re: TreePlot

From Bob Hanlon <hanlonr357@gmail.com>
Newsgroups comp.soft-sys.math.mathematica
Subject Re: TreePlot
Date 2014-03-08 08:00 +0000
Message-ID <lfeine$5od$1@smc.vnet.net> (permalink)
References <20140306070605.915576A18@smc.vnet.net>
Organization Time-Warner Telecom

Show all headers | View raw


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@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
>
>

Back to comp.soft-sys.math.mathematica | Previous | Next | Find similar


Thread

Re: TreePlot Bob Hanlon <hanlonr357@gmail.com> - 2014-03-08 08:00 +0000

csiph-web