documentationfor yFiles for HTML 2.6

CircularLayout

This layout algorithm arranges graphs in a circular fashion.

Inheritance Hierarchy
MultiStageLayout
CircularLayout
Implemented Interfaces

Remarks

Layout Style

The nodes are arranged in circles and stars which emphasize group and tree structures inside a graph. Circular layout algorithms find applications in many areas such as social networking, network management, WWW visualization, eCommerce, telecommunications.

Circular layout with default settings

Circular layout with SINGLE_CYCLE layout style

Circular layout with SINGLE_CYCLE layout style and exterior edge routing

Concept

The layout algorithm performs three steps when calculating a circular arrangement for a graph:

  1. It searches for partitions in the input graph depending on connectivity and on the given layout style. Considering each partition as a node, the resulting graph has a tree-like structure.
  2. The partitions are laid out as circles using the selected partition style.
  3. The algorithm delegates the layout calculation for the underlying tree (in which each node corresponds to a partition) to a specialized layout algorithm accessible by singleCycleLayout or balloonLayout. The partitions are moved to their final location.

Features

The layout algorithm places the nodes in circles that represent a partition. There are several ways to find partitions in the input graph. Which one is applied is defined using layoutStyle.

The nodes in a partition can either lie on or in the interior of a circle. The placement of the nodes affects the compactness of the layout and can be specified using partitionStyle.

Since edges are routed as straight lines, they may overlap with nodes or node labels. To resolve these overlaps, an edge routing algorithm (e.g. EdgeRouter or OrganicEdgeRouter) can be appended.

Edges that belong to the same circle partition can be routed around the exterior of the circle. The edge routing policy determines which edges are exterior and routing details of these edges can be configured via exteriorEdgeLayoutDescriptor. Exterior edge routes consist of smooth arcs. Edges that are routed externally can significantly improve the readability of the circular layout by reducing the edge clutter in the interior of the circle. This holds true especially for graph with a large number of edges. On the other hand, it significantly increases the amount of required space and, thus, is not recommended when maximally compact layouts are desired.

This layout algorithm supports edge bundling. In order to bundle the edges, the nodes of the graph are clustered in groups. Edge bundling is supported only if partition layout style is set to CYCLE and layout style is other than BCC_ISOLATED.

Default Values of Properties

componentLayoutEnabledtrueThe stage that arranges connected graph components is activated.
considerNodeLabelsfalseNode labels are not taken into account.
edgeRoutingPolicyINTERIOREdges are routed as simple straight lines on the interior.
fromSketchModefalseThe layout algorithm does not consider the initial coordinates of the nodes.
hideGroupsStageEnabledtrueThe stage responsible for hiding group nodes is activated.
integratedNodeLabelingfalseNode labels are not placed by this algorithm.
layoutStyleBCC_COMPACT
maximumDeviationAngle90
nodeLabelingPolicyRAY_LIKE_LEAVES
orientationLayoutEnabledtrueThe orientation is activated.
partitionStyleCYCLE
placeChildrenOnCommonRadiustrueChildren are placed on a common radius.
selfLoopRouterEnabledtrueThe stage that routes self-loops is activated.

Type Details

yfiles module
layout-organic
yfiles-umd modules
layout-multipage, layout-organic, layout
Legacy UMD name
yfiles.circular.CircularLayout

See Also

For layout styles BCC_ISOLATED and CUSTOM_GROUPS, the underlying graph that connects the partition is usually not a perfect tree structure, i.e., it may contain additional non-tree edges. Since the applied tree layout algorithm only considers tree edges, the non-tree edges may sometimes overlap with other graph elements.

Constructors

Properties

Methods

Constants