Question: Add labels in the annotation bar of pheatmap
gravatar for xieshaojun0621
4 months ago by
United States
xieshaojun062190 wrote:

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

# 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

ADD COMMENTlink modified 6 weeks ago by SplitInf0 • written 4 months ago by xieshaojun062190

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))


ADD REPLYlink modified 4 months ago • written 4 months ago by cpad011210k
gravatar for biostart
4 months ago by
biostart260 wrote:

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

ADD COMMENTlink written 4 months ago by biostart260
gravatar for SplitInf
6 weeks ago by
SplitInf0 wrote:

@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)
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 COMMENTlink modified 6 weeks ago • written 6 weeks ago by SplitInf0
Please log in to add an answer.


Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1087 users visited in the last hour