GoXam - Graph Layout

In GoXam diagrams, you can position a node by setting the Node.Location attached property on its root visual element, or by setting programmatically the Node.Location property. And users can reposition a node by dragging it.

However, GoXam also has automated means of positioning the nodes. The DiagramLayout classes provide GridLayout, TreeLayout, ForceDirectedLayout, and LayeredDigraphLayout. A layout can be associated with a whole diagram by setting the Diagram.Layout property. A layout can also be associated with a Group by setting the Group.Layout attached property. (You can see a sample of different layouts running within a single diagram in the Grouping sample here.)

The LayoutManager manages the layouts present in a diagram, including deciding what conditions require the layout to run again. The LayoutManager also supports animation, which allows smooth transitions as nodes move to a new location.

Circular Layout

CircularLayout arranges the nodes in a circle or an ellipse.

Circular Layout Sample

Grid Layout

GridLayout is used in the Palette control, but you can use it in any diagram.

GridLayout samples

With GoXam, the Layout features are included. There is no "pro" edition that adds these features.

ForceDirectedLayout

ForceDirectedLayout uses forces similar to physical forces to push and pull nodes. Links are treated as if they were springs of a particular length and stiffness. Each node has an electrical charge that repels other nodes.

force directed layout

TreeLayout

TreeLayout is good for laying out tree-structured graphs. It is very fast and can handle many nodes. Multiple options are provided to allow you to achieve the appearance and clarity you need in a limited amount of space.

Tree Layout samples

LayeredDigraphLayout

When the nodes of a graph can be naturally organized into layers but the structure is not tree-like, you can use LayeredDigraphLayout. This layout can handle multiple links coming into a node as well as links that create cycles.

layered digraph layout