Graph component placement algorithm

We are two computer science master students currently doing their thesis work on the topic : UML component diagram generation from textual models. One issue we are trying to solve/improve is that diagrams can get very messy for complex systems. We are at the early stages of our work and still trying to get familiar with different techniques and solutions.

We stumbled upon PlantUML and Graphviz and were wondering if you could tell us more about the layout algorithm(s) and strategies you are using. Maybe you have pointers on where we should look? We are hoping to contribute with our research to GraphViz and/or PlantUML. Any help would be appreciated :)

Have a nice day,


I can't speak for PlantUML

I can't speak for PlantUML and what techniques they use. The page gives a high-level description (plus some basic references) on the algorithms used in Graphviz. References for the papers used for fdp, twopi and circo are given there. At the bottom of, you'll see links to the papers used for dot, neato and sfdp.

In general, there is a large and active graph drawing community. You can probably start at And then each domain (software design, bioinformatics, etc.) has its own group working on graph drawing connected to the particular semantics and aesthetics of the domain.

There are many important and broadly useful additions that can be made to Graphviz. We have recently lost our working environment, and would appreciate any software contributions or additions to our community.


Recent comments