Question: Help with heatmap.2
0
gravatar for heking
15 months ago by
heking0
heking0 wrote:

I am having trouble adding the GO accession numbers on the left hand side of this graph. They match up with the GO descriptions found on the right hand side of the Heatmap. I thought I could use the text function, seen after the Heatmap.2 function, to annotate them, however it doesn't work.

If anyone has any suggestions to do this via R I would be very grateful!

https://postimg.cc/image/kesk3zpkb/

png("BPheatmaps_in_r.png",    # create PNG for the heat map        
    width = 5*300,        # 5 x 300 pixels
    height = 5*300,
    res = 300,            # 300 pixels per inch
    pointsize = 8)        # smaller font size

heatmap.2(BPmat_data,
           col = c(colorpanel(1,"white","white"), colorpanel(700,"darkblue","blue","white")),
           margins = c(4, 28),
          dendrogram = 'none',
           trace = 'none', 
           lhei = c(2, 8), #plot layout
           scale = c("none"),
           symbreaks = min(BPmat_data, na.rm=TRUE),
           cexRow = 0.5, cexCol = 0.7,
           density.info = "none",
           sepcolor = colorpanel(1,"black","black"),
           sepwidth=c(0.0001,0.0001),
          key.xlab = "p-value",
          colsep=0:ncol(BPmat_data),
          rowsep=0:nrow(BPmat_data),
          srtCol=45)
          get.uni <- !duplicated(BP$GO_Term)
text(x =5, y = seq(0.2,1.2, by=(1/nrow(BPrnames))),
     labels = BP$GO_Term[get.uni],
     las = 2, col = "#000000", cex = 0.4, xpd = TRUE)
dev.off
R • 465 views
ADD COMMENTlink modified 15 months ago by Kevin Blighe49k • written 15 months ago by heking0

Please read the how to on adding images: How to add images to a Biostars post

ADD REPLYlink written 15 months ago by RamRS24k
2
gravatar for Kevin Blighe
15 months ago by
Kevin Blighe49k
Kevin Blighe49k wrote:

This can be done with mtext(), and by having enough patience to position the labels correctly.

Generate random data and plot it:

dm <- matrix(rexp(200, rate=.1), ncol=20)
rownames(dm) <- paste("Gene", c(1:nrow(dm)), sep=" ")
colnames(dm) <- paste("Sample", c(1:ncol(dm)), sep=" ")

heatmap.2(dm, col=terrain.colors(30), dendrogram="none", trace="none")

Create a label to pass to mtext()

extraLab <- paste("Extra Label", c(1:nrow(dm)), sep="", collapse="\n\n")
extraLab
[1] "Extra Label1\n\nExtra Label2\n\nExtra Label3\n\nExtra Label4\n\nExtra Label5\n\nExtra Label6\n\nExtra Label7\n\nExtra Label8\n\nExtra Label9\n\nExtra Label10"

Add with mtext():

mtext(extraLab, side=2, las=2, adj=-0.35, padj=0.67, font=3, cex=1.1)

df

The positioning of the labels can be done via a combination of side, adj, padj, and the cex itself. Here, I've passed a single string with end-line characters, but you have the option to just call mtext() multiple times with each separate label, if you wish. By the way, ComplexHeatmap package would allow you to do this easily by having rownames on one side and then text-based annotation on the other.

Kevin

ADD COMMENTlink modified 15 months ago • written 15 months ago by Kevin Blighe49k
Please log in to add an answer.

Help
Access

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