ELK Layered

Preview Image

Property Value
Identifier: org.eclipse.elk.layered
Meta Data Provider: options.LayeredMetaDataProvider


Layer-based algorithm provided by the Eclipse Layout Kernel. Arranges as many edges as possible into one direction by placing nodes into subsequent layers. This implementation supports different routing styles (straight, orthogonal, splines); if orthogonal routing is selected, arbitrary port constraints are respected, thus enabling the layout of block diagrams such as actor-oriented models or circuit schematics. Furthermore, full layout of compound graphs with cross-hierarchy edges is supported when the respective option is activated on the top level.

Category: Layered

The layer-based method was introduced by Sugiyama, Tagawa and Toda in 1981. It emphasizes the direction of edges by pointing as many edges as possible into the same direction. The nodes are arranged in layers, which are sometimes called “hierarchies”, and then reordered such that the number of edge crossings is minimized. Afterwards, concrete coordinates are computed for the nodes and edge bend points.

Supported Graph Features

Name Description
Self Loops Edges connecting a node with itself.
Inside Self Loops Self-loops routed through a node instead of around it.
Multi Edges Multiple edges with the same source and target node.
Edge Labels Labels that are associated with edges.
Ports Edges are connected to nodes over ports.
Compound Edges that connect nodes from different hierarchy levelsand are incident to compound nodes.
Clusters Edges that connect nodes from different clusters, but not the cluster parent nodes.

Supported Options

Option Default Value
Activate Inside Self Loops false
Add Unnecessary Bendpoints false
Additional Port Space new ElkMargin(0)
Additional Wrapped Edges Spacing 10
Alignment Alignment.AUTOMATIC
Aspect Ratio 1.6f
BK Edge Straightening EdgeStraighteningStrategy.IMPROVE_STRAIGHTNESS
BK Fixed Alignment FixedAlignment.NONE
Comment Box false
Components Spacing 20f
Connected Components Compaction false
Content Alignment EnumSet.noneOf(ContentAlignment)
Correction Factor for Wrapping 1.0
Crossing Minimization Strategy CrossingMinimizationStrategy.LAYER_SWEEP
Cutting Strategy CuttingStrategy.MSD
Cycle Breaking Strategy CycleBreakingStrategy.GREEDY
Debug Mode false
Direction Direction.UNDEFINED
Direction Congruency DirectionCongruency.READING_DIRECTION
Direction Priority 0
Distance Penalty When Improving Cuts 2.0
Edge Center Label Placement Strategy CenterEdgeLabelPlacementStrategy.MEDIAN_LAYER
Edge Edge Between Layer Spacing 10
Edge Label Placement EdgeLabelPlacement.UNDEFINED
Edge Label Side Selection EdgeLabelSideSelection.SMART_DOWN
Edge Label Spacing 2
Edge Node Between Layers Spacing 10
Edge Node Spacing 10
Edge Routing EdgeRouting.ORTHOGONAL
Edge Spacing 10
Edge Thickness 1
Favor Straight Edges Over Balancing <not defined>
Feedback Edges false
Graph Wrapping Strategy WrappingStrategy.OFF
Greedy Switch Activation Threshold 40
Greedy Switch Crossing Minimization GreedySwitchType.TWO_SIDED
Hierarchical Sweepiness 0.1
Hierarchy Handling HierarchyHandling.INHERIT
High Degree Node Maximum Tree Height 5
High Degree Node Threshold 16
High Degree Node Treatment false
Hypernode false
Improve Cuts true
Improve Wrapped Edges true
Individual Spacing Override <not defined>
Inline Edge Labels false
Inside Self Loop false
Interactive Reference Point InteractiveReferencePoint.CENTER
Junction Points new KVectorChain()
Label Node Spacing 5
Label Port Spacing 1
Label Spacing 0
Layer Bound Integer.MAX_VALUE
Layer Constraint LayerConstraint.NONE
Layout Partition <not defined>
Layout Partitioning false
Linear Segments Deflection Dampening 0.3
Manually Specified Cuts <not defined>
Margins new ElkMargin()
Max Node Promotion Iterations 0
Merge Edges false
Merge Hierarchy-Crossing Edges true
Merge Self-Loops false
MSD Freedom 1
No Layout false
Node Flexibility <not defined>
Node Flexibility Default NodeFlexibility.NONE
Node Label Padding new ElkPadding(5)
Node Label Placement NodeLabelPlacement.fixed()
Node Layering Strategy LayeringStrategy.NETWORK_SIMPLEX
Node Node Between Layers Spacing 20
Node Placement Strategy NodePlacementStrategy.BRANDES_KOEPF
Node Promotion Strategy NodePromotionStrategy.NONE
Node Size Constraints EnumSet.noneOf(SizeConstraint)
Node Size Minimum new KVector(0, 0)
Node Size Options EnumSet.of(SizeOptions.DEFAULT_MINIMUM_SIZE)
Node Spacing 20
North or South Port false
Padding new ElkPadding(12)
Port Alignment PortAlignment.JUSTIFIED
Port Alignment (East) <not defined>
Port Alignment (North) <not defined>
Port Alignment (South) <not defined>
Port Alignment (West) <not defined>
Port Anchor Offset <not defined>
Port Border Offset 0
Port Constraints PortConstraints.UNDEFINED
Port Index <not defined>
Port Label Placement PortLabelPlacement.OUTSIDE
Port Labels Next to Port false
Port Side PortSide.UNDEFINED
Port Sorting Strategy PortSortingStrategy.INPUT_ORDER
Port Spacing 10
Position <not defined>
Post Compaction Constraint Calculation ConstraintCalculationStrategy.SCANLINE
Post Compaction Strategy GraphCompactionStrategy.NONE
Priority 0
Randomization Seed 1
Self-Loop Distribution SelfLoopDistributionStrategy.NORTH
Self-Loop Ordering SelfLoopOrderingStrategy.STACKED
Semi-Interactive Crossing Minimization false
Separate Connected Components true
Shortness Priority 0
Sloped Edge Zone Width 2.0
Sloppy Spline Layer Spacing Factor 0.2
Spline Routing Mode SplineRoutingMode.SLOPPY
Straightness Priority 0
Thoroughness 7
Upper Bound On Width [MinWidth Layerer] 4
Upper Layer Estimation Scaling Factor [MinWidth Layerer] 2
Valid Indices for Wrapping <not defined>
Validification Strategy ValidifyStrategy.GREEDY
Wide Nodes on Multiple Layers WideNodesStrategy.OFF