Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Preconditions
  • The graph has a proper layering. (except for self-loops)
  • Node orders are fixed.
  • Port positions are fixed.
  • An implementation may allow in-layer connections.
  • An implementation may require node margins to be set.
Postconditions
  • Each node is assigned a y coordinate such that no two nodes overlap.
  • The height of each layer is set.
  • The height of the graph is set to the maximal layer height.
Remarks
  • Support for in-layer connections may be required to be able to handle certain problems. (odd port sides, for instance)
  • If node margins are supported, the NodeMarginCalculator can compute them.
  • Port positions can be fixed by using the PortPositionProcessor.
Implementations
  • LinearSegmentsNodePlacer. Builds linear segments of nodes that should have the same y coordinate and tries to respect those linear segments. Linear segments are placed according to a barycenter heuristic. Inspired by
    • Georg Sander, A fast heuristic for hierarchical Manhattan layout. In Proceedings of the Symposium on Graph Drawing (GD'95), LNCS vol. 1027, pp. 447-458, Springer, 1996.

  • BKNodePlacer. Assembles nodes into blocks placed in straight lines in an attempt to minimize the number of edge bends, similar to the linear segments node placer. However, instead of using a barycenter heuristic to place nodes, the placement also tries to minimize the number of edge bends, usually resulting in diagrams that require more space.
    • Ulrik Brandes and Boris Köpf, Fast and simple horizontal coordinate assignment. In Proceedings of the 9th International Symposium on Graph Drawing (GD'01), LNCS vol. 2265, pp. 33-36, Springer, 2002.

  • InteractiveNodePlacer. Tries to keep the preset coordinates of nodes from the original layout. For dummy nodes, a guess is made to infer their coordinates. Requires the other interactive phase implementations to have run as well.
Tests
  • The nodes of a layer are strictly ordered with regards to their y coordinate.
  • Any two nodes of a layer do not overlap with regards to their bounding box (height + margins).

...