How to cluster the annotation in the heat map?
1
0
Entering edit mode
6.6 years ago
Biologist ▴ 290
library(ComplexHeatmap)

set.seed(123)
mat = matrix(rnorm(100), 10)
foo = sample(letters[1:2], 10, replace = TRUE)
colnames(mat) = sapply(letters[1:10], function(x) paste(rep(x, 10), collapse = ""))
cn = colnames(mat)
ha2 = HeatmapAnnotation(foo = foo,
                cn = anno_text(cn, rot = 90, offset = unit(1, "npc") - unit(2, "mm"), just = "right"),
                annotation_height = unit.c(unit(5, "mm"), max_text_width(cn)))
Heatmap(mat, show_column_names = FALSE, bottom_annotation = ha2)

This gave me a heat map like following:

https://imgur.com/CHQdXyb

Here you see in the bottom annotation both a and b are not clustered. I would like to know how can I do each group (color) get clustered. I mean all samples which come under "b" at one side and samples under "a" on one side.

Can anyone please tell me how to do this? Thanks !!

r heatmap clustering rna-seq • 4.9k views
ADD COMMENT
1
Entering edit mode
6.6 years ago

ComplexHeatmap doesn't support splitting that way - it only supports splitting by rows. If you want to split by columns, you could just generate two separate heatmaps and plot them side by side with the draw function draw(hmap1 + hmap2).

In your case, you could also just plot the transpose of your data-matrix and then split by rows, as follows (NB - the key parameter to use is split):

library(ComplexHeatmap)

set.seed(123)

mat=matrix(rnorm(100), 10)

foo=sample(letters[1:2], 10, replace=TRUE)

colnames(mat)=sapply(letters[1:10], function(x) paste(rep(x, 10), collapse=""))

cn = colnames(mat)

ha2 = rowAnnotation(foo=foo,
                #cn=anno_text(cn, rot=0, just="right", which="row"),
                annotation_height=unit.c(unit(5, "mm"), max_text_width(cn)))

draw(Heatmap(t(mat), split=foo, show_row_names=TRUE) + ha2, heatmap_legend_side="left", annotation_legend_side="left")

hmap

ADD COMMENT

Login before adding your answer.

Traffic: 1730 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6