This codebase implements the Sugiyama Algorithm for visually representing layered graphs. It makes use of the Dependency project to keep track of dependencies between different items.
As discussed in the README.md for Dependency, one of the original rationales for the codebase was to visually represent package dependencies, and as a result, that's the case that's been most tested.
Here are some examples of layered graphs created by this code. The code that created these graphs can be found in the test folder in the graph/shape package.
This sample shows a simple layered graph with simple, non-cyclic dependencies.
This sample shows a larger number of layers and dependencies, but the structure is still fairly simple:
Here's an example showing a very simple package arrangement, with a cyclic dependency:
And here's a more complex arrangement with cycles:
Not all DiGraphs can be represented without lines crossing. Here's a simple example that cannot be drawn in a way that preserves layers without also including line crossings: