Tree Transform

The tree transform computes a node-link diagram layout for hierarchical data. It supports both cluster layouts (for example to create dendrograms) and tidy layouts (using the method of Reingold & Tilford, as later corrected by Buchheim et al.). The coordinates x and y produced by the layout represent an arbitrary coordinate system; for example, you can treat x as an angle and y as a radius to produce a radial layout.

Internally, this transform processes a collection of special tree node objects generated by an upstream nest or stratify transform. The original input data object can be accessed under the data field of these tree node objects. This transform uses the d3-hierarchy library.


Transform Parameters

Property Type Description
field Field The data field corresponding to a numeric value for the node. The sum of values for a node and all its descendants is available on the node object as the value property. If unspecified, the layout will instead tally the counts of leaf nodes.
sort Compare A comparator for sorting sibling nodes. The inputs to the comparator are tree node objects, not input data objects.
method String The layout method to use. One of tidy (the default) or cluster.
separation Boolean ≥ 4.3 A flag indicating if node separation logic should be applied. If true (the default), cousin nodes will be placed farther apart than sibling nodes. If false, nodes will be uniformly separated, as in a standard dendrogram.
size Number[ ] The size of the layout, provided as a [width, height] array.
nodeSize Number[ ] The size of each node, provided as a [width, height] array.
as String[ ] The output fields at which to write the layout results. The default is ["x", "y", "depth", "children"], where x and y are the layout coordinates, depth is the tree depth, and children is the count of a node’s children in the tree.


  "type": "tree",
  "method": "tidy",
  "size": [{"signal": "width"}, {"signal": "height"}]

Computes a tidy tree layout using the full width and height of the view.