The cactustree layout is a hierarchical layout optimised for use with hierarchical edge bundling (geom_conn_bundle()). It is a fractal layout that places node children as circles on the periphery of their parent circle, each circle scaled by the total weight of their children.

  direction = "out",
  weight = NULL,
  scale_factor = 0.75,
  overlap = 0.5,
  upright = FALSE,
  circular = FALSE



An tbl_graph object


The direction of the tree in the graph. 'out' (default) means that parents point towards their children, while 'in' means that children point towards their parent.


An optional node variable to use as weight. If NULL all leaf nodes will be assigned a weight of 1.


A scaling factor for the circles in the layout. The radius will be calculated as total_weight ^ scale_factor with total_weight being the weight of the node and all it's children.


How much is the center of child nodes offset from the periphery of their parent as a proportion of their own radius.


Logical. Should the children of the root only be distributed around the top half of the root or all the way around.


Logical. Should the layout be transformed to a circular representation. Ignored.


A data.frame with the columns x, y, r, leaf, depth, circular as well as any information stored as node variables in the tbl_graph object.


cactustree is a layout intended for trees, that is, graphs where nodes only have one parent and zero or more children. If the provided graph does not fit this format an attempt to convert it to such a format will be made.


Dang, T., Forbes, A. (2017). CactusTree: A Tree Drawing Approach for Hierarchical Edge Bundling. 2017 IEEE Pacific Visualization Symposium, 210-214.