Algorithms for assigning 2D coordinates (typically used for graph visualizations) to vertices. Current layout algorithms include:

- `Layout, AbstractLayout`: interface and abstract class defining the Layout contract and handling some common implementation details
- `AggregateLayout`: allows multiple layouts to be combined and manipulated as one layout
- `BalloonLayout`: places vertices on nested circles (trees/forests only)
- `CircleLayout`: places vertices on a circle
- `DAGLayout`: places vertices in a hierarchy (directed acyclic graphs only)
- `FRLayout`: Fruchterman-Reingold algorithm (force-directed)
- `ISOMLayout`: self-organizing map layout
- `KKLayout`: Kamada-Kawai algorithm (tries to maintain specified distances)
- `RadialTreeLayout`: places vertices on concentric circles (trees only)
- `SpringLayout`: simple force-directed layout
- `StaticLayout`: places vertices at user-specified locations
- `TreeLayout`: simple tree/forest layout

Rendering and other aspects of visualization are handled in the `visualization` package.