Drawing the graph in hierarchic way is well studied drawing paradigm. Sugiyama frameworks and its variants, its each steps are well studied. It is applicable for both drawing graphs and trees.
The most famous tool for obtaining hierarchic graphs is to use graphviz dot program. The samples are;
Grammer tree(Theory of Computation) for a context free languages,
Unix history graph.
As well as dot program, you can use Yed, GoVisual Diagram Editor, Robinviz, Cytoscape and DaVinci tools to draw these types of graphs. You can also use specific libraries OGDF, LEDA, JGraph etc.