Add circular dendrograms

circos.dendrogram(
    dend,
    facing = c("outside", "inside"),
    max_height = NULL,
    use_x_attr = FALSE,
    sector.index = get.current.sector.index(),
    track.index = get.current.track.index())

Arguments

dend

A dendrogram object.

facing

Is the dendromgrams facing inside to the circle or outside?

max_height

Maximum height of the dendrogram. This is important if more than one dendrograms are drawn in one track and making them comparable. The height of a dendrogram can be obtained by attr(dend, "height").

use_x_attr

Whether use the x attribute to determine node positions in the dendrogram, used internally.

sector.index

Index of sector.

track.index

Index of track.

Details

Assuming there are n nodes in the dendrogram, the positions for leaves on x-axis are always 0.5, 1.5, ..., n - 0.5. So you must be careful with xlim when you initialize the cirular layout.

You can use the dendextend package to render the dendrograms.

See also

Examples

load(system.file(package = "circlize", "extdata", "bird.orders.RData")) labels = hc$labels # name of birds ct = cutree(hc, 6) # cut tree into 6 pieces n = length(labels) # number of bird species dend = as.dendrogram(hc) circos.par(cell.padding = c(0, 0, 0, 0)) circos.initialize(sectors = "a", xlim = c(0, n)) # only one sector
max_height = attr(dend, "height") # maximum height of the trees circos.trackPlotRegion(ylim = c(0, 1), bg.border = NA, track.height = 0.3, panel.fun = function(x, y) { for(i in seq_len(n)) { circos.text(i-0.5, 0, labels[i], adj = c(0, 0.5), facing = "clockwise", niceFacing = TRUE, col = ct[labels[i]], cex = 0.7) } })
suppressPackageStartupMessages(require(dendextend)) dend = color_branches(dend, k = 6, col = 1:6) circos.trackPlotRegion(ylim = c(0, max_height), bg.border = NA, track.height = 0.4, panel.fun = function(x, y) { circos.dendrogram(dend, max_height = max_height) })