Weight Driven Placement

FlowTracer uses a weight-driven placement (WDP) algorithm to place nodes close to their dependencies and minimize overlapping edges. A higher weight is assigned to nodes with low fanout, which allows nodes with single dependency relationships to stack perfectly. A lower weight is assigned to high fanout dependencies.

Direction of Dependencies

Weight-driven layouts (graphs) can be placed in either a vertical or horizontal direction. Vertical graphs have primary inputs (files not generated in the flow) at the top, with dependencies going in the downward direction. The final outputs of the flow are displayed at the lowest position in the graph. The horizontal layouts flow left-to-right.

Arrow Style

WDP supports 5 choices for dependency arrows:
Arrow Type
Smaller graphs use curved arrows. Larger use straight lines or no lines. This is automatically determined based on the number of nodes and arrows in the graph.
Disables all arrows.
Straight Lines
Arrows are drawn center-to-center and may go behind other nodes.
Curved (default)
Curved arrows that do not overlap with nodes.
Arrows with 90° angles that do not overlap with nodes.

Controlling Size and Space of Nodes

In both vertical and horizontal layouts, WDP supports customizing the width and height of nodes and the spacing between the nodes. These values can be adjusted to produce the best looking graph for a given flow. These settings can be configured in the Preferences dialog on the Graph tab, and are independent between vertical and horizontal modes.

Special Handling for Wide Graphs

It is common for a flow graph to include one or more dependency levels that contain significantly more nodes than the other levels. This proportion tends to produce graphs that appear very wide (in vertical mode) or very tall (in horizontal mode). There are 2 automated methods for altering wide rows to produce a graph with a better aspect ratio with nodes drawn larger and more meaningful.

Non-uniform node sizing is used to reduce the width of nodes (in vertical mode) or the height of nodes (in horizontal mode) for rows that have many nodes. The graph preferences include a minimum size setting that prevents reduced-size nodes from becoming too small to see.

The second method is to spread wide dependency levels onto multiple rows. In vertical mode, multiple rows can be used for a single dependency level. In horizontal mode, multiple columns can be used. The algorithm divides dependency levels until the aspect ratio of the result graph is close to the aspect ratio of the canvas window. The graph preferences include a minimum node count for rows to spread out. Only nodes with that many nodes or more are allowed to be spread onto multiple rows (vertical) or columns (horizontal).

Quality vs Speed

Producing an optimal layout with the fewest possible arrow crossings is a complex problem. WDP provides three different choices to influence the trade-off of quality vs speed. The default method is to allow FlowTracer to choose the quality based on the size of the layout in terms of the number of nodes and arrows.
Quality Setting
Layout quality is automatically determined based on the number of nodes and arrows in the graph. Smaller graphs are drawn in highest quality but very large graphs may not be optimized at all.
Layout quality is reduced for producing graphs as quickly as possible. This is best for large graphs to prevent delays in drawing.
Balanced (default)
Layout is partially optimized to reduce arrow crossings and edge lengths, but not completely.
Graphs are placed with high quality (minimal arrow crossings and shortest arrows) even if it takes a long time to generate the layout.

Graph Preferences

Preferences related to WDP layouts are found in the Preferences dialog, which can be accessed through the top level FlowTracer menu under Console > Preferences on the Graph tab, or by clicking the gear icon next to the buttons for vertical, horizontal, and grid view. The Control-Shift-G keyboard shortcut can also be used.

In the Graph tab, the choice for speed-vs-quality and arrow type can be modified. Below those, the Node Size and Spacing section allows modifying the size and spacing between nodes in vertical and horizontal mode. These settings are independent for each drawing direction.

The settings for allowing non-uniform node sizes and for spreading levels out to multiple rows is also controlled in the Node Size and Spacing settings. These settings are also independent for each drawing direction. Modifying this for vertical graphs has no effect on horizontal graphs.

In the Graph tab, there are 2 example graphs that show how changing the settings affects the layout. Some of the effects are not intuitive, such as how widening nodes tends to flatten the layout; the demos are drawn with Zoom Fit applied. Currently, non-uniform node sizes are supported in the demos but spreading rows is not supported.

Graph preferences can be saved to your home directory. Those settings will be applied to all future FlowTracer consoles opened by you. They can also be saved to the project; users who open a FlowTracer console on that project will load the settings that were saved.

The Graph tab includes buttons for reverting the changes that were made, loading the standard FlowTracer defaults, or forcing a Redraw of the current graph shown in the main FlowTracer Set Viewer (drawing window). It does not apply to sets that were floated using Float this Tab.