This layout algorithm arranges graphs in an organic fashion.
Remarks
Layout Style
The organic layout style is characterized by a natural distribution of nodes that exhibits clusters and symmetric properties of the graph. Nodes are placed space-saving, close to their adjacent nodes. Edges maintain uniform lengths and are routed with straight-line segments without bends.
Organic diagrams are commonly used for visualizing relations in large networks for example in bioinformatics, enterprise networking, visualizing social networks, mesh visualization or system management.
Concept
OrganicLayout uses a force-directed approach to place the nodes of the input graph. According to this approach, the graph is modeled as a physical system with appropriate forces acting on it. Nodes are considered as electrically charged particles with mutually repulsive forces. Edges are modeled as springs that attract adjacent nodes. A good diagram is obtained from an equilibrium state of the system, i.e., the nodes are rearranged based on the physical forces until the system reaches a (local) minimum of the sum of the forces.
Features
Quality-Time-Ratio
The ratio between the layout quality and the running time is conveniently adjustable.
Layout Grid
This layout algorithm is able to consider a LayoutGrid structure. However, for common nodes (i.e. non-group nodes) it only considers single layout grid cells. Furthermore, the layout algorithm will throw a ArgumentError if there is a layout grid and the descendants of a group node are assigned to different layout grid cells or if there are group nodes that are associated with a GroupNodeHandlingPolicy other than FREE. In addition, the algorithm doesn't support multiple grids, i.e., all nodes have to be mapped to cells of the same layoutGrid.
Avoidance of Node Edge Overlaps
The layout can be configured such that overlaps between edges and nodes are avoided. However, it doesn't guarantee that they won't appear in the resulting layout. To avoid overlaps, it is possible to route the edges afterwards using an edge routing algorithm, e.g., OrganicEdgeRouter.
Maximum Duration
OrganicLayout allows restricting the duration which may be a suitable option to reduce the runtime required for large graphs. Note that restricting the stop duration may result in a lower layout quality. Furthermore, the actual runtime may exceed the stop duration since the layout algorithm still has to find a valid solution.
Substructures
The algorithm is also able to detect certain types of substructures in a graph (i.e., chains, stars, cycles, parallel, tree and group structures), and arrange these structures with special-purpose layout styles. Using substructure styles ensures that the corresponding structures are easily recognized in the graph. For the detection of substructures, it is optionally possible to consider nodeTypes, such that only nodes of the same user-defined type can form a substructure.
Constraints
The placement of the nodes can be influenced and restricted by additional constraints. Among others, the layout supports the following constraints; for more constraints see OrganicConstraintData<TNode>.
Port Placement Constraints
This layout algorithm handles port placement constraints by applying the PortPlacementStage as a postprocessing step.
Layout Stages
This class provides a configurable pipeline that contains various ILayoutStages. Each ILayoutStage can incorporate preprocessing or postprocessing steps into the layout calculation to streamline the input graph and enhance the resulting layout. Additionally, custom ILayoutStages can be added and executed either before or after the predefined ones.
The following default ILayoutStages are included:
- PortPlacementStage: Assigns edges to ports.
- GroupHidingStage: Removes group nodes and their adjacent edges before layout processing and reinserts them afterward. Note: This stage is disabled by default.
- SubgraphLayoutStage: Filters the graph to include only specific nodes and edges from a subgraph while retaining the positions of excluded elements. Note: This stage is disabled by default.
- ComponentLayout: Arranges graph components with customizable styles. The property style is set to circular component arrangement style.
- GenericLabeling: Efficiently places node and edge labels. The property fillEmptyScope is set to
false
and stopDuration is set to ZERO. - OrientationStage: Changes the layout orientation in four possible directions, with or without mirroring on the x or y-axis.
- SelfLoopRouter: Routes self-loops in a graph, allowing for either orthogonal or rounded routing styles. The property routingStyle is set to ROUNDED.
- ParallelEdgeRouter: Routes multiple edges between the same nodes in parallel.
With these layoutStages the layout algorithm is configured well, so they usually don't need to be changed.
Performance
Specifying a stopDuration can reduce the time the OrganicLayout takes to produce a result. The acceleration is achieved by both loosening the requirements for terminating the incremental improvement of the layout and switching to faster heuristics for some features, such as overlap removal or crossing optimization for group substructures. It should be noted that the stopDuration is not a guarantee for the maximum time spent, as the algorithm still has to produce a valid result.
With disconnected graphs containing large unconnected components, it can be beneficial to change the component arrangement style of the used componentLayout from the default style PACKED_CIRCLE to the faster ROWS style.
Default Values of Properties
allowNodeOverlaps | false | Node overlaps are not allowed. |
automaticGroupNodeCompaction | true | Automatic group node compaction is enabled. |
avoidNodeEdgeOverlap | false | Overlaps between nodes and edges are not avoided. |
clusteringPolicy | NONE
| Automatic clustering is disabled. |
compactnessFactor | 0.5 | |
create3DLayout | false | The layout algorithm doesn't produce a 3D result. |
defaultMinimumNodeDistance | 0 | |
defaultPreferredEdgeLength | 40 | |
deterministic | true | The layout algorithm is deterministic. |
edgeLabelPlacement | GENERIC
| Edge labels are placed by an independent labeling algorithm. |
groupBoundsCalculator | GroupBoundsCalculator
| |
groupNodeCompactness | 0.4 | |
nodeLabelPlacement | CONSIDER
| Node labels are considered. |
qualityTimeRatio | 0.6 | |
shapeConstraint | NONE
| |
stopDuration | 30s | A |
Type Details
- yFiles module
- algorithms
See Also
Constructors
Creates a new OrganicLayout instance with default settings.
Parameters
A map of options to pass to the method.
- circleRecognition - boolean
- Whether or not the layout algorithm tries to force nodes of cycles on geometric circles. This option sets the circleRecognition property on the created object.
- chainRecognition - boolean
- Whether or not the layout algorithm tries to straighten paths of degree-2 nodes. This option sets the chainRecognition property on the created object.
- create3DLayout - boolean
- Whether or not the layout algorithm should create a 3D result. This option sets the create3DLayout property on the created object.
- groupNodeCompactness - number
- The compactness of group nodes. This option sets the groupNodeCompactness property on the created object.
- automaticGroupNodeCompaction - boolean
- Whether or not group nodes are compacted automatically. This option sets the automaticGroupNodeCompaction property on the created object.
- clusteringPolicy - OrganicLayoutClusteringPolicy
- The clustering policy that is applied to the input graph and before executing the arrangement algorithm. This option sets the clusteringPolicy property on the created object.
- allowClusterAsGroupSubstructure - boolean
- Whether or not detected clusters are taken into account as group substructures. This option sets the allowClusterAsGroupSubstructure property on the created object.
- nodeLabelPlacement - NodeLabelPlacement
- How the layout handles the position of node labels. This option sets the nodeLabelPlacement property on the created object.
- edgeLabelPlacement - EdgeLabelPlacement
- How the layout handles the position of edge labels. This option sets the edgeLabelPlacement property on the created object.
- groupBoundsCalculator - ILayoutGroupBoundsCalculator
- The ILayoutGroupBoundsCalculator instance used for calculating the size of group nodes. This option sets the groupBoundsCalculator property on the created object.
- avoidNodeEdgeOverlap - boolean
- Whether or not the layout algorithm tries to avoid node/edge overlaps. This option sets the avoidNodeEdgeOverlap property on the created object.
- layoutOrientation - LayoutOrientation
- The layoutOrientation of the OrientationStage. This option sets the layoutOrientation property on the created object.
- qualityTimeRatio - number
- The ratio of layout quality versus running time. This option sets the qualityTimeRatio property on the created object.
- stopDuration - TimeSpan
- The duration that this layout algorithm is allowed to run before stopping gracefully. This option sets the stopDuration property on the created object.
- chainSubstructureStyle - OrganicLayoutChainSubstructureStyle
- The style specifier for chain substructures. This option sets the chainSubstructureStyle property on the created object.
- cycleSubstructureStyle - OrganicLayoutCycleSubstructureStyle
- The style specifier for cycle substructures. This option sets the cycleSubstructureStyle property on the created object.
- parallelSubstructureStyle - OrganicLayoutParallelSubstructureStyle
- The style specifier for parallel substructures. This option sets the parallelSubstructureStyle property on the created object.
- parallelSubstructureTypeSeparation - boolean
- Whether parallel substructures should be separated by the node type. This option sets the parallelSubstructureTypeSeparation property on the created object.
- starSubstructureTypeSeparation - boolean
- Whether star substructures should be separated by the node type. This option sets the starSubstructureTypeSeparation property on the created object.
- starSubstructureStyle - OrganicLayoutStarSubstructureStyle
- The style specifier for star substructures. This option sets the starSubstructureStyle property on the created object.
- treeSubstructureStyle - OrganicLayoutTreeSubstructureStyle
- The style specifier for tree substructures. This option sets the treeSubstructureStyle property on the created object.
- groupSubstructureScope - OrganicLayoutGroupSubstructureScope
- The scope specifier for group substructures. This option sets the groupSubstructureScope property on the created object.
- groupSubstructureStyle - GroupSubstructureStyle
- The style specifier for group substructures. This option sets the groupSubstructureStyle property on the created object.
- cycleSubstructureSize - number
- The minimum size (number of nodes) a cycle needs to have to be detected and handled as a cycle substructure. This option sets the cycleSubstructureSize property on the created object.
- chainSubstructureSize - number
- The minimum size (number of nodes) a chain needs to have to be detected and handled as a chain substructure. This option sets the chainSubstructureSize property on the created object.
- parallelSubstructureSize - number
- The minimum size (number of nodes) a parallel structure needs to have to be detected and handled as a parallel substructure. This option sets the parallelSubstructureSize property on the created object.
- starSubstructureSize - number
- The minimum size (number of nodes including the root) a star needs to have to be detected and handled as a star substructure. This option sets the starSubstructureSize property on the created object.
- treeSubstructureSize - number
- The minimum size (number of nodes) a tree needs to have to be detected and handled as a tree substructure. This option sets the treeSubstructureSize property on the created object.
- groupSubstructureSize - number
- The minimum size (number of nodes) a group needs to have to be detected and handled as a group substructure. This option sets the groupSubstructureSize property on the created object.
- compactnessFactor - number
- The compactness factor for the layout algorithm. This option sets the compactnessFactor property on the created object.
- defaultPreferredEdgeLength - number
- The default preferred edge length. This option sets the defaultPreferredEdgeLength property on the created object.
- preferredMinimumNodeToEdgeDistance - number
- The minimum preferred distance between nodes and edges when node-edge overlaps are not allowed. This option sets the preferredMinimumNodeToEdgeDistance property on the created object.
- deterministic - boolean
- Whether or not the deterministic mode of this algorithm is enabled. This option sets the deterministic property on the created object.
- defaultMinimumNodeDistance - number
- The minimum node distance that this algorithm should enforce between all pairs of nodes. This option sets the defaultMinimumNodeDistance property on the created object.
- allowNodeOverlaps - boolean
- Whether or not overlaps between nodes are allowed. This option sets the allowNodeOverlaps property on the created object.
- shapeConstraint - ShapeConstraint
- The shape constraint for the result of the layout algorithm. This option sets the shapeConstraint property on the created object.
Properties
Gets or sets whether or not detected clusters are taken into account as group substructures.
Default Value
false
.Property Value
true
if clusters are taken into account as group substructures, false
otherwiseSee Also
Sample Graphs
Gets or sets whether or not overlaps between nodes are allowed.
Default Value
false
.Node overlaps are not allowed.
Property Value
true
if node overlaps are allowed, false
otherwiseSee Also
Sample Graphs
Gets or sets whether or not group nodes are compacted automatically.
Remarks
Default Value
true
.Automatic group node compaction is enabled.
Property Value
true
if automatic group node compaction is enabled, false
otherwiseSee Also
Gets or sets whether or not the layout algorithm tries to avoid node/edge overlaps.
Default Value
false
.Overlaps between nodes and edges are not avoided.
Property Value
true
if the layout algorithm tries to avoid node/edge overlaps, false
otherwiseSee Also
Gets or sets whether or not the layout algorithm tries to straighten paths of degree-2 nodes.
Remarks
Default Value
false
.Chains are not automatically recognized and straightened.
Property Value
true
if the layout algorithm tries to straighten maximal long chains, false
otherwiseSee Also
Sample Graphs
Gets or sets the minimum size (number of nodes) a chain needs to have to be detected and handled as a chain substructure.
Gets or sets the style specifier for chain substructures.
Remarks
A chain is a simple edge path where the degree of the nodes is less than or equal to 2
. Use property chainSubstructureSize to specify the minimum size a chain must have.
If there are user-defined nodeTypes, a chain substructure contains only nodes of the same type or only nodes without a type (i.e. null
as type). This way, node types can be used to control which elements are allowed to form a substructure.
Default Value
NONE.Property Value
See Also
Gets or sets whether or not the layout algorithm tries to force nodes of cycles on geometric circles.
Remarks
Default Value
false
.Cycles are not automatically recognized and forced on geometric circles.
Property Value
true
if the layout algorithm tries to force nodes of cycles on geometric circles, false
otherwiseSee Also
Sample Graphs
Gets or sets the clustering policy that is applied to the input graph and before executing the arrangement algorithm.
Remarks
By default, no clustering is applied, that is, NONE is set.
When a policy other than NONE is specified, the following steps are performed during the layout:
- A clustering algorithm is applied to the input graph.
- All nodes of the same cluster are put into a newly created group node.
- The layout is applied to the modified graph.
- Group nodes denoting clusters (inserted during step
2
) are removed.
The user can also specify customized clusters by defining appropriate groups.
Default Value
Property Value
See Also
Gets or sets the compactness factor for the layout algorithm.
Remarks
Smaller values result in less compact drawings, greater values result in more compact drawings.
The compactness value needs to lie in [0,1]
.
Default Value
0.5
.Property Value
[0,1]
Throws
- Exception({ name: 'ArgumentError' })
- if the specified value is outside the interval
[0,1]
See Also
Sample Graphs
Gets the ComponentLayout from the layoutStages of this instance.
Remarks
Several features of the OrganicLayout require specific configurations of the used componentLayout instance to work properly. Unless the default instance is replaced with another instance of componentLayout, the OrganicLayout performs the necessary configurations itself, restoring the original configuration after it terminates.
If you need to replace the instance, modify the layoutStages stack using replace. If you want to remove a stage, consider disabling it instead.
Throws
- Exception({ name: 'InvalidOperationError' })
- If there is no instance of the respective type in the
See Also
Gets or sets whether or not the layout algorithm should create a 3D result.
Remarks
Default Value
false
.The layout algorithm doesn't produce a 3D result.
Property Value
true
if the layout algorithm creates a 3D result, false
otherwiseSee Also
Gets or sets the minimum size (number of nodes) a cycle needs to have to be detected and handled as a cycle substructure.
Gets or sets the style specifier for cycle substructures.
Remarks
A cycle is a simple edge path where the first and last node are identical. The algorithm only considers cycles where the number of edges connecting nodes of the cycle with the remaining nodes is less than or equal to 2
. To define the minimum number of nodes a cycle must contain, use property cycleSubstructureSize (default is 4
).
If there are user-defined nodeTypes, a cycle substructure contains only nodes of the same type or only nodes without a type (i.e. null
as type). This way, node types can be used to control which elements are allowed to form a substructure.
Default Value
NONE.Property Value
See Also
Gets or sets the minimum node distance that this algorithm should enforce between all pairs of nodes.
Remarks
If there is no specific minimum node distance assigned to a node, this default minimum node distance is used.
The minimum node distance needs to be non-negative.
Default Value
0
.Property Value
Throws
- Exception({ name: 'ArgumentError' })
- if the specified minimum node distance is negative
See Also
Sample Graphs
Gets or sets the default preferred edge length.
Remarks
If there is no specific preferred edge length assigned to an edge, this default preferred edge length is used.
The preferred edge length needs to be non-negative.
Default Value
40
.Property Value
Throws
- Exception({ name: 'ArgumentError' })
- if the specified edge length is negative
See Also
Sample Graphs
Gets or sets whether or not the deterministic mode of this algorithm is enabled.
Remarks
Default Value
true
.The layout algorithm is deterministic.
Property Value
true
if this algorithm works deterministically, false
otherwiseSee Also
Gets or sets how the layout handles the position of edge labels.
Remarks
The policy INTEGRATED tries to ensure that the edges are long enough to place the associated labels without overlapping each other. However, the applied simulation-based algorithm cannot always guarantee such results. Furthermore, the labels of an edge can overlap with other graph elements, including labels of other edges. To further improve the outcome, consider enabling the genericLabeling stage using the enabled property which runs as a post-processing step that reduces such overlaps.
To obtain suitable results, the following points have to be considered:
- Both the side and angle of the labels has to be specified relative to the edge (i.e., angleReference is set to RELATIVE_TO_EDGE_FLOW and sideReference is set to RELATIVE_TO_EDGE_FLOW). Otherwise, the resulting side/angle of the labels may be wrong.
- If only a subset of nodes is placed, the algorithm only considers labels of edges with at least one movable endpoint (i.e., source or target node).
- Labels of edges that connect a group node with one of its parent groups are not supported. The same applies to labels of grouped edges that are part of a substructure.
- Self-loops and parallel edges are handled by the selfLoopRouter and parallelEdgeRouter respectively. Thus, labels of such edges are not considered by the algorithm.
Default Value
Property Value
See Also
Gets the GenericLabeling from the layoutStages of this instance.
Remarks
Throws
- Exception({ name: 'InvalidOperationError' })
- If there is no instance of the respective type in the
Gets or sets the ILayoutGroupBoundsCalculator instance used for calculating the size of group nodes.
Default Value
GroupBoundsCalculator.Property Value
Throws
- Exception({ name: 'ArgumentError' })
- if the specified
is null
See Also
Gets or sets the compactness of group nodes.
Remarks
The compactness ranges from 0
to 1
where 0
results in group nodes not affecting the overall layout too much while 1
forces nodes in the same group to be clustered tightly.
The values need to lie in [0,1]
.
Default Value
0.4
.Property Value
Throws
- Exception({ name: 'ArgumentError' })
- if specified compactness value is outside the interval
[0,1]
See Also
Sample Graphs
Gets or sets the scope specifier for group substructures.
Remarks
Group substructures that lie in the specified scope are treated as substructures in the layout process, i.e., the child nodes are arranged on a disk that is contained in the group node.
A group is a group substructure if it satisfies the following conditions.
- The group node does not contain any other group.
- The GroupNodeHandlingPolicy is FREE; see scopeModes.
- No node of the group is fixed.
- The group contains at least the specified minimum number of nodes
The scope specifiers indicate which group substructures are considered in the layout process.
Default Value
NO_GROUPS.Property Value
Gets or sets the minimum size (number of nodes) a group needs to have to be detected and handled as a group substructure.
Default Value
4
.Property Value
Throws
- Exception({ name: 'ArgumentError' })
- if the given minimum size is less than
2
See Also
Gets or sets the style specifier for group substructures.
Default Value
COMPACT_DISK.Property Value
See Also
Gets or sets the layoutOrientation of the OrientationStage.
See Also
Gets the mutable stack of ILayoutStage that will be applied to this layout.
Gets or sets how the layout handles the position of node labels.
Remarks
Default Value
Property Value
See Also
Sample Graphs
Gets the ParallelEdgeRouter from the layoutStages of this instance.
Remarks
Throws
- Exception({ name: 'InvalidOperationError' })
- If there is no instance of the respective type in the
Gets or sets the minimum size (number of nodes) a parallel structure needs to have to be detected and handled as a parallel substructure.
Remarks
Default Value
3
.Property Value
Throws
- Exception({ name: 'ArgumentError' })
- if the given minimum size is less than
2
See Also
Gets or sets the style specifier for parallel substructures.
Remarks
A parallel structure consists of a set of nodes (called the inner nodes) such that all nodes have degree two and are connected to the same pair of neighbors (called the outer nodes).
Use property parallelSubstructureSize to specify the minimum number of inner nodes a structure must contain to be handled as a substructure.
If there are user-defined nodeTypes, a parallel substructure contains only nodes of the same type or only nodes without a type (i.e. null
as type). This way, node types can be used to control which elements are allowed to form a substructure.
Default Value
NONE.Property Value
See Also
Gets or sets whether parallel substructures should be separated by the node type.
Remarks
Default Value
true
.Parallel substructures are strictly separated by node type.
Property Value
true
if parallel substructures are separated by node type, false
if they may contain nodes of different typesSee Also
Sample Graphs
Gets or sets the minimum preferred distance between nodes and edges when node-edge overlaps are not allowed.
Remarks
Default Value
40
.Property Value
Throws
- Exception({ name: 'ArgumentError' })
- if the specified distance is negative
Gets or sets the ratio of layout quality versus running time.
Remarks
The larger the ratio, the better the quality of the resulting layout but the longer it may take to perform the layout calculation.
The value needs to lie within [0,1]
.
Default Value
0.6
.Property Value
0.0
(low quality, fast) and 1.0
(high quality, slow)Throws
- Exception({ name: 'ArgumentError' })
- if the specified ratio is outside the interval
[0,1]
See Also
Gets the SelfLoopRouter from the layoutStages of this instance.
Remarks
Throws
- Exception({ name: 'InvalidOperationError' })
- If there is no instance of the respective type in the
Gets or sets the shape constraint for the result of the layout algorithm.
Default Value
NONE.Property Value
Throws
- Exception({ name: 'ArgumentError' })
- if the given restriction is
null
See Also
Sample Graphs
Gets or sets the minimum size (number of nodes including the root) a star needs to have to be detected and handled as a star substructure.
Default Value
4
.Property Value
Throws
- Exception({ name: 'ArgumentError' })
- if the given minimum size is less than
3
See Also
Gets or sets the style specifier for star substructures.
Remarks
A star consists of a set of degree one nodes that are all connected to the same node (called the root of the star). Use property starSubstructureSize to define the minimum number of nodes, including the root, a star must contain to be detected as a substructure.
If there are user-defined nodeTypes, by default, a star substructure only contains nodes of the same type or only nodes without a type (i.e. null
as type), see starSubstructureTypeSeparation. This way, node types can be used to control which elements are allowed to form a substructure.
Default Value
NONE.Property Value
See Also
Gets or sets whether star substructures should be separated by the node type.
Remarks
Default Value
true
.Star substructures are strictly separated by node type.
Property Value
true
if star substructures are separated by node type, false
if they may contain nodes of different typesSee Also
Sample Graphs
Gets or sets the duration that this layout algorithm is allowed to run before stopping gracefully.
Remarks
Default Value
30s
.A
Property Value
Throws
- Exception({ name: 'ArgumentError' })
- if the specified duration has a negative value
See Also
Gets or sets the minimum size (number of nodes) a tree needs to have to be detected and handled as a tree substructure.
Gets or sets the style specifier for tree substructures.
Remarks
Use property treeSubstructureSize to define the minimum number of nodes, including the root, a tree must contain to be detected as a substructure.
If there are user-defined nodeTypes, a tree substructure contains only nodes of the same type or only nodes without a type (i.e. null
as type). This way, node types can be used to control which elements are allowed to form a substructure.
Default Value
NONE.Property Value
See Also
Methods
Calculates an organic arrangement of the graph.
Remarks
Parameters
A map of options to pass to the method.
- graph - LayoutGraph
- the input graph
See Also
Implements
Calculates an organic arrangement of the graph.
Remarks
Parameters
A map of options to pass to the method.
- graph - LayoutGraph
- the input graph
Calculates an initial placement of nodes, before the main organic (force-directed) optimization loop starts.
Remarks
Parameters
A map of options to pass to the method.
- graph - LayoutGraph
- the graph for which the initial placement is calculated
createLayoutData
(graph: LayoutGraph) : OrganicLayoutData<LayoutNode,LayoutEdge,LayoutNodeLabel,LayoutEdgeLabel>Returns an instance of LayoutData<TNode,TEdge,TNodeLabel,TEdgeLabel> that can be used to perform item-specific configurations for the OrganicLayout.
Remarks
Parameters
A map of options to pass to the method.
- graph - LayoutGraph
- the graph that determines the generic type arguments of the created layout data
Returns
- ↪OrganicLayoutData<LayoutNode,LayoutEdge,LayoutNodeLabel,LayoutEdgeLabel>
- an instance of layout data that can be used to perform item-specific configurations for the given OrganicLayout.
Returns an instance of LayoutData<TNode,TEdge,TNodeLabel,TEdgeLabel> that can be used to perform item-specific configurations for the OrganicLayout.
Remarks
Parameters
A map of options to pass to the method.
- graph - IGraph
- the graph that determines the generic type arguments of the created layout data
Returns
- ↪OrganicLayoutData<INode,IEdge,ILabel,ILabel>
- an instance of layout data that can be used to perform item-specific configurations for the given OrganicLayout.
See Also
LayoutExecutor
type is available at runtime.Constants
A data key for specifying user-defined node clusters.
Remarks
When user-defined cluster Ids are provided, the specified clusteringPolicy is ignored.
Assign an Object as cluster ID to a node or null
if the node does not belong to a cluster.
See Also
A data key for specifying the orientation of edges in the layout.
Remarks
Specifies whether or not the layout algorithm takes predefined directions of the edges into account.
This IMapper<K,V> key allows the user to specify hints on the orientation of edges in the layout that is produced by the algorithm. More precisely, a positive value indicates that the edge should have the same orientation as the layout orientation, a negative value indicates that the edge should have the opposite orientation as the layout orientation, and a value of 0
means that the orientation can be set by the layout algorithm arbitrarily. See also layoutOrientation.
See Also
Sample Graphs
A data key for assigning individual policies for all group nodes.
Remarks
The policies specify how a group's content is handled and if it is resized during layout calculation.
Assign one of the values FREE, FIX_BOUNDS, or FIX_CONTENTS to each node.
See Also
A data key for specifying the minimum length of edges.
Remarks
See Also
A data key for specifying the inertia of nodes.
Remarks
[0,1]
.1.0
: The node will not move.0.5
: The node will only move half as far as it would with an inertia of0.0
.0.0
: The node will move as fast as possible.
See Also
0.0
, the algorithm considers the initial coordinates of the nodes.0.0
.A data key for specifying the stress of nodes.
Remarks
The stress value indicates how far a node will possibly move. The higher the stress of a node is, the farther it may move.
The stress can be specified for each non-group node if all nodes are in the scope of the OrganicLayout. It is defined to be a value from the interval [0,1]
.
See Also
1.0
, the algorithm considers the initial coordinates of the nodes.1.0
.A data key for marking nodes that are allowed to overlap other nodes.
Remarks
true
if the node should be ignored during overlap removal, or false
otherwise.See Also
A data key for defining an individual preferred length for each edge.
Remarks
null
to fallback to the default value.See Also
A data key for marking the nodes that are part of the relevant subset.
Remarks
null
otherwise. Further, a node can also be marked with INCLUDE_EXTENDED_NEIGHBORHOOD and INCLUDE_CLOSE_NODES if the surroundings nodes should also be part of the subset.See Also
A data key for assigning source edge group information for edges.
Remarks
- When the star substructure style SEPARATED_RADIAL is applied, edges grouped at the root node are drawn in a grouped routing style.
- When one of the parallel substructure styles RECTANGULAR, RADIAL or STRAIGHT_LINE is applied, then edges of the parallel structures may be grouped at their outer nodes.
See Also
A data key for assigning target edge group information for edges.
Remarks
- When the star substructure style SEPARATED_RADIAL is applied, edges grouped at the root node are drawn in a grouped routing style.
- When one of the parallel substructure styles RECTANGULAR, RADIAL or STRAIGHT_LINE is applied, then edges of the parallel structures may be grouped at their outer nodes.
See Also
A data key for publishing the z-coordinate for all non-group nodes in the graph.