
Tidier Drawings of Trees [pdf] - _virtu
http://emr.cs.iit.edu/~reingold/tidier-drawings.pdf
======
soegaard
There are some improvements in Buchheim et al:

;
[http://dirk.jivas.de/papers/buchheim02improving.pdf](http://dirk.jivas.de/papers/buchheim02improving.pdf)

See also "Compact layout of Layered Trees".

Note that Bill Mill's blog post "Drawing Presentable Trees" presents the
algorithm in a very readable manner:

    
    
         http://billmill.org/pymag-trees/

~~~
mbostock
Yep! This linear-time algorithm described by Buchheim et al. is used by
d3.layout.tree:

[https://github.com/d3/d3-hierarchy/blob/master/src/tree.js](https://github.com/d3/d3-hierarchy/blob/master/src/tree.js)

------
bediger4000
I needed to draw tidy binary trees recently. I found the algorithm in this
paper impenetrable, but the paper from which this one is derived
([http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.150...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.150.4061&rep=rep1&type=pdf))
had a very accessible algorithm, that produced results that I found
acceptable.

------
lemming
I love the fact that old papers often contain the complete source code to an
implementation of the algorithm they're discussing.

------
cm2187
Does anyone know a good algorithm for drawing a genealogy tree? I tried
playing with this problem and it is quite hard to find something that looks
OK. The problem is that it is a tree that has branches going both way (up and
down).

~~~
austinjp
I would be very interested in solutions to this. It strikes me that genealogy
trees are multi-dimensional, and compressing them to two dimensions makes
layout far less optimal.

~~~
cm2187
Plus there are lots of constraints. People of the same generation have to
appear on the same vertical level. And there are lots of configurations that
are simply impossible to represent. For instance a couple with three kids,
each of them marries someone, how do we represent the parents of who they
marry without crossing lines? Or it is relatively easy to represent someone
having children from two different wives but how about three different wives
without crossing lines?

And then it needs to look reasonably compact to be visually helpful. So it's a
kind of a best effort basis.

~~~
cel
Here's a good one:
[http://www.dgp.toronto.edu/~mjmcguff/research/#mcguffin_info...](http://www.dgp.toronto.edu/~mjmcguff/research/#mcguffin_infovis2005)

It combines a tree of decendents from one person with a tree of ancestors of
another person, to make a "dual-tree" with two foci. It preserves the property
of people of the same generating being on the same level.

> For instance a couple with three kids, each of them marries someone, how do
> we represent the parents of who they marry without crossing lines?

The dual-tree approach wouldn't be able to show all of this at once, but with
some affordances for navigating the tree (see the video) and indicators for
where there are more nodes not shown, it should be reasonable to follow the
relationships.

Also here's another interesting approach, using a radial tree with time
information. I found this while trying to find the other paper:
[http://vis.berkeley.edu/courses/cs294-10-sp10/wiki/images/f/...](http://vis.berkeley.edu/courses/cs294-10-sp10/wiki/images/f/f2/Family_Tree_Visualization_-
_Final_Paper.pdf)

~~~
austinjp
This is excellent, many thanks. Personally I'd got to McGuffin's fig 4 on the
back of an envelope. Glad to find someone has taken things further.

I'm planning on drawing an extensive family tree, it's surprising how much
physical space they take up.

------
mstolpm
Title should contain (1981).

------
channon
[https://iit.edu/news/iittoday/?p=47371](https://iit.edu/news/iittoday/?p=47371)

------
xtrm1
If you look closely enough, John S Tilford is effing Hackerman!!! OMG he did
hack time

------
peterhadlaw
This is my Algorithms professor at IIT! :)

