Add labels in the annotation bar of pheatmap
2
3
Entering edit mode
6.3 years ago

I have the code below to generate the heatmap with annotation. enter image description here

library(pheatmap)
# Generate some data
test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")
# Add annotation as described above, and change the name of annotation
annotation <- data.frame(Var1 = factor(1:10 %% 2 == 0, labels = c("Exp1", "Exp2")))
rownames(annotation) <- colnames(test) # check out the row names of annotation
pheatmap(test, annotation = annotation)

I'm wondering whether there is a way to add the labels in the annotation bar in R code. Thanks in advance. enter image description here

pheatmap annotation labels heatmap • 16k views
ADD COMMENT
0
Entering edit mode

I think the simplest is just export as PDF and edit it in Adobe Illustrator

ADD REPLY
3
Entering edit mode
6.3 years ago

use grid.text (part of base functions, earlier part of library "grid") (play with x and y coordinates):

pheatmap(test, annotation = annotation)
grid.text(levels(annotation$Var1), x=c(0.25,0.6),y=c(0.89,0.89), gp=gpar(fontsize=10))

Rplot01

ADD COMMENT
1
Entering edit mode
6.1 years ago
SplitInf ▴ 20

@cpad0112 has already provided an excellent solution and pointed out that pheatmap uses grid for plotting. However in the spirit of having more control of where the text will go, I would suggest adding the text directly in the viewport as it saves the time to play around with the xy coordinates.

pheatmaps.obj <- pheatmap(test, annotation = annotation)
library(grid)
showViewport()  #check viewport name
downViewport("col_annotation.3-3-3-3") # annotation
pheatmaps.obj <- pheatmap(test, annotation = annotation) # replot
grid.text(levels(annotation$Var1), x=c(0.25,0.75),y=c(0.5,0.5), gp=gpar(fontsize=5))
ADD COMMENT

Login before adding your answer.

Traffic: 2461 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