Radial Layout Style

This section presents the radial layout style.

About the Style

In the radial layout style, the nodes of a graph are arranged on concentric circles. The layout calculation starts by conceptually reducing the graph to a tree structure whose root node is taken as the center of all circles. Each child node in this tree structure is then placed on the next outer circle within the sector of the circle that was reserved by its parent node. All edges that were initially ignored are re-established and the radii of the circles are calculated taking the sector sizes needed by each whole subtree into account.

This layout style is well suited for the visualization of directed graphs and tree-like structures.

Terminology

The circles are also referred to as layers. Layer count increases from center to outer.

Figure 10.73. Sample layout produced by class RadialLayouter

Sample layout produced by class RadialLayouter
 
Sample radial layout.  

Class RadialLayouter

Class RadialLayouter is a layout provider of radial layout.

Class RadialLayouter provides a set of options that affect its layout behavior. These options can be set using the properties of class RadialLayouter. The options are documented within the API documentation of class RadialLayouter.

Layout Options

The policy to choose the center node from the node set of the graph can be determined by using the CenterNodesPolicy property. The following policies are available:

Directed
Description Chooses the center node from the set of nodes that have no predecessors. If this set is empty, an arbitrary node of the graph becomes the center node.
Centrality
Description The node that has the highest centrality becomes the center node.
WeightedCentrality
Description The node that has the highest weighted centrality becomes the center node. This is the default setting.
Selection
Description Uses a custom selection of nodes. To specify the nodes, a data provider holding the selection information for each node is looked up. The data provider is expected to be registered with the graph using the look-up key returned by CenterNodesDpKey. If there are more than one node marked as center node, these nodes get placed on the innermost circle and the actual center position remains empty.

The LayeringStrategy property specifies how nodes will be distributed to the layers. These layering strategies are available:

Bfs
Description Layering based on a breadth-first search (BFS). All edges will span at most one layer in the resulting drawing. Edges between nodes that belong to the same layer are possible. This is the default setting.
Hierarchical
Description The layer distance of an edge is the absolute difference between the layer numbers of its source and target node. Layer assignment will be done in such a way that the overall sum of the layer distances of all edges in the layout is minimal.

Drawing Style Options

The distance between the layers depends on the space that is needed by the subtrees. However, the layer spacing can be controlled and a minimal distance can be defined.

Layer Spacing
API
double LayerSpacing { get; set; }
Description Defines a unit value for the distance between circles, i.e., each circle radius is a multiple of this value.
Minimal Layer Distance
API
double MinimalLayerDistance { get; set; }
Description Defines the minimal layer distance.

Edge routing options include different routing policies that can be specified using the EdgeRoutingStrategy property:

Polyline
Description Polyline edge routing. Edges will be routed straight-line, if possible, or have bends on the circles.
Arc
Description Arc edge routing. Source and target of an edge as well as one bend on each spanned circle are used as main control points. Additional control points are inserted in-between to create an arc-like edge. This is the default setting.

Note that with both edge routing policies overlaps of edge paths with nodes cannot always be prevented. In particular, this affects edges that span multiple circles (i.e., layers).

Advanced Layout Concepts

Node Halos

RadialLayouter by default supports node halos as soon as they are declared. It considers any specified additional paddings around nodes, however, edges can cross through these areas in the resulting diagram.

The following table lists the data provider look-up keys that are recognized by RadialLayouter in conjunction with node halo support.

Table 10.61. Data provider look-up keys

Key Element Type Value Type Description
NodeHaloDpKey node NodeHalo A NodeHalo object that specifies the halo sizes at each side of a node.

Supplemental Layout Data

Class RadialLayouter knows a number of data provider keys which are used to retrieve supplemental layout data for a graph's elements. The data is bound to the graph by means of a data provider, which is registered using a given look-up key. Table 10.62, “Data provider look-up keys” lists all look-up keys for RadialLayouter.

Binding supplemental layout data to a graph is described in the section called “Providing Supplemental Layout Data”.

Table 10.62. Data provider look-up keys

Key Element Type Value Type Description
NodeHaloDpKey node NodeHalo A NodeHalo object that specifies the halo sizes at each side of a node.