The circle packing algorithm is basically a treemap using circles instead of rectangles. Due to the nature of circles they cannot be packed as efficeintly leading to increased amount of "empty space" as compared to a treemap. This can be beneficial though, as the added empty space can aid in visually showing the hierarchy.
layout_igraph_circlepack(graph, weight = NULL, circular = FALSE,
sort.by = NULL, direction = "out")
An igraph object
An optional vertex attribute to use as weight. Will only affect the weight of leaf nodes as the weight of non-leaf nodes are derived from their children.
Logical. Should the layout be transformed to a circular representation. Ignored.
The name of a vertex attribute to sort the nodes by.
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.
A data.frame with the columns x
, y
, r
, leaf
,
depth
, circular
as well as any information stored as vertex
attributes on the igraph object.
The circle packing is based on the algorithm developed by Weixin Wang and collaborators which tries to find the most dense packing of circles as they are added, one by one. This makes the algorithm very dependent on the order in which circles are added and it is possible that layouts could sometimes be optimized by choosing a different ordering. The algorithm for finding the enclosing circle is that randomized incremental algorithm proposed by Emo Welzl. Both of the above algorithms are the same as used in the D3.js implementation of circle packing and their C++ implementation in ggraph is inspired by Mike Bostocks JavaScript implementation.
Wang, W., Wang, H. H., Dai, G., & Wang, H. (2006). Visualization of large hierarchical data by circle packing. Chi, 517-520.
Welzl, E. (1991). Smallest enclosing disks (balls and ellipsoids). New Results and New Trends in Computer Science, 359-370.
Other layout_igraph_*: layout_igraph_auto
,
layout_igraph_dendrogram
,
layout_igraph_hive
,
layout_igraph_linear
,
layout_igraph_manual
,
layout_igraph_partition
,
layout_igraph_treemap