circos.dendrogram {circlize} | R Documentation |
Add circular dendrograms
Description
Add circular dendrograms
Usage
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 |
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 |
use_x_attr |
Whether use the |
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
https://jokergoo.github.io/circlize_book/book/high-level-plots.html#phylogenetic-trees
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)
})
circos.clear()