Question: Assign different colors to different columns in heatmap
0
gravatar for f.hastert
3.2 years ago by
f.hastert0
Germany
f.hastert0 wrote:

Hi,

I am trying to plot three datasets A, B, C in one heatmap in the order "A1, B1, C1, A2, B2, C2....." using pheatmap   and I'd like to assign a specific colorRampPalette to each data set, e.g. A = green...grey, B = blue...grey, C = red...grey.                                                                                                                                                                         So far I have my datasets arranged as intended, but the coloring is causing troubles as you can see in the last part of the script. I would be happy for any suggestions, as I am bloody R beginner.

So the script I am using is as follows...

#three datasets to be used
library(pheatmap)

A <-c(14,6,4,4,4,6,6,4,5,5,5,7,5,6,6,11,13,9,7,8,8,10,10,11,10,9,7,8,8,8,7,7,10,6,6,4,3,5,4,5,3,4,3,4,6,5,6,6,7,6,6,6,7,7,8,8,7,7,7,8,9,8,9,9,9,10,12,14,10,10,10,11,11,11,9,11,8,8,6,6,5,6,6,5,3,3,3,6,4,6,8,8,8,9,26,301,474,222,120,612,1016,127,35,22,19,15,13,13,11,11,12,12,13,12,13,14,15,16,13,11,8,7,5,5,5,6,4,6,3,5,5,6,6,8,8,10,13,33,325,526,262,91,148,176,52,34,28,26,22,22,24,23,25,25,45,87,93,181,244,110,71,135,24,12,7,9,16,15,6,4,2,4,5,5,6,5,6,6,7,9,11,38,89,71,72,184,250,33,28,25,26,26,24,31,39,41,42,48,66,86,70,50,40,83,951,119,14,7,8,9,8,7,5,4,5,6,6,7,8,7,9,11,12,13,29,46,34,28,40,52,22,14,15,20,18,12,15,18,24,26,28,41,60,47,39,35,44,770,48,13,10,9,11,9,5,4,4,5,5,6,8,7,10,9,8,7,15,26,39,30,25,42,48,20,17,14,23,19,18,22,24,25,23,29,55,85,66,51,40,53,729,71,47,40,32,35,16,7,5,6,6,5,8,8,10,9,9,9,10,11,21,37,30,26,32,39,22,19,19,20,21,19,21,22,25,27,28,49,69,70,78,71,62,450,67,58,40,30,18,8,6,5,4,4,7,9,8,9,9,11,11,13,21,102,149,71,46,92,91,33,25,26,32,27,23,29,33,30,32,41,93,135,149,232,192,94,295,42,32,28,33,37,22,7,5,5,6,6,9,7,7,8,8,8,9,10,12,21,21,18,31,45,18,14,14,21,22,18,20,23,23,26,29,36,48,47,40,37,51,592,182,52,42,35,35,18,7,5,6,4)

Am = matrix(A, nrow =43, ncol = 10)
pheatmap(Am, colorRampPalette(c("grey90", "purple", "black"))(1000),display_numbers = FALSE, border_color = NA, cluster_row = FALSE, cluster_col = FALSE,show_rownames = T,show_colnames = T, legend = TRUE)

B  <- c(99,90,86,87,90,95,86,85,83,80,83,85,84,79,57,37,27,66,83,80,87,95,88,88,91,105,114,124,127,122,114,100,104,83,73,69,71,72,74,86,32,14,20,81,85,84,82,82,84,83,83,82,80,79,81,82,90,82,79,89,84,86,116,228,861,1130,1121,814,565,484,415,348,278,207,149,436,188,86,74,77,83,74,81,27,15,20,74,84,88,88,87,84,84,91,97,86,102,92,84,81,76,77,80,93,87,82,86,88,89,98,107,106,104,97,95,97,93,90,90,84,78,74,72,72,77,83,24,13,14,68,80,82,87,88,82,81,81,84,85,86,89,85,83,82,88,89,98,95,102,135,142,87,89,110,101,93,92,90,92,92,87,96,90,85,73,72,86,89,83,22,13,18,65,82,81,81,81,83,82,82,79,80,81,90,82,84,85,87,93,100,111,140,357,1503,1935,1924,1193,662,466,377,313,258,208,176,817,191,79,71,79,77,83,94,26,14,18,62,84,81,83,83,84,84,86,90,86,82,83,87,80,82,81,78,85,98,114,192,719,1334,1817,1420,821,562,458,408,362,280,212,1882,149,77,75,73,81,81,84,24,16,17,72,86,88,87,89,84,83,83,89,85,82,81,85,81,78,82,82,83,84,92,255,1190,1667,1742,1115,645,466,397,350,294,225,192,1279,121,96,89,87,98,87,84,27,22,20,69,84,93,96,94,90,93,89,92,90,89,95,95,92,91,95,92,97,109,121,151,299,530,767,734,543,382,282,254,231,184,136,345,111,112,94,87,84,82,92,25,15,15,111,84,88,93,89,95,91,95,95,92,93,92,95,96,97,96,96,108,107,106,116,186,294,380,367,233,180,160,180,179,138,109,161,106,99,93,92,100,93,102,28,15,21,71,87,90,89,86,87,86,82,84,83,84,96,87,84,84,83,83,89,124,145,293,1262,1813,1956,1306,763,587,500,432,348,263,211,1076,370,112,103,99,104,88,96,41,15,14)
Bm = matrix(B, nrow=43, ncol = 10)
pheatmap(Bm, colorRampPalette(c("grey90", "green", "darkgreen"))(1000),display_numbers = FALSE, border_color = NA, cluster_row = FALSE, cluster_col = FALSE,show_rownames = T,show_colnames = T, legend = TRUE)

C <- c(10,9,9,9,11,7,10,11,8,9,11,12,23,53,136,203,208,160,58,26,19,19,17,15,13,14,19,19,22,18,27,33,27,21,16,19,14,14,13,9,5,3,2,7,5,7,7,7,9,10,9,8,9,11,11,12,16,23,32,29,25,21,20,24,43,47,36,38,47,147,150,81,67,40,25,62,26,17,15,13,17,16,18,8,2,3,7,6,7,8,8,9,9,16,11,20,28,14,12,30,28,13,15,19,17,24,21,17,15,17,17,22,23,23,24,27,23,21,21,18,13,13,12,11,12,17,7,3,2,6,7,6,8,9,8,7,10,10,18,20,15,10,13,12,11,12,16,15,14,21,46,39,24,25,43,73,77,120,152,107,79,110,29,22,16,15,15,16,15,5,3,3,6,6,6,6,7,7,6,6,9,9,11,13,9,15,13,8,11,11,10,12,12,14,15,17,14,14,19,18,14,12,16,21,81,24,27,26,19,14,13,15,5,3,3,6,6,5,7,6,6,7,7,7,7,7,8,9,7,7,8,8,9,14,14,12,8,7,15,31,47,105,107,88,82,76,71,290,27,14,14,10,10,10,9,5,4,4,5,6,6,6,5,6,6,7,6,7,7,7,6,8,7,7,6,7,7,7,12,33,22,11,19,48,215,207,100,58,40,33,194,20,19,20,17,12,7,8,4,3,3,5,5,7,6,7,8,7,7,7,8,9,7,7,7,7,8,9,11,10,8,9,9,7,11,18,35,110,124,130,122,82,52,118,16,19,16,10,6,8,8,3,2,2,6,6,5,7,6,7,7,8,7,10,10,8,9,10,9,8,9,8,8,10,8,9,7,9,18,49,136,127,128,203,163,71,118,11,8,8,8,11,10,7,4,4,4,7,7,6,7,6,4,5,6,7,7,6,6,5,7,7,7,7,8,9,9,9,7,8,10,22,50,210,212,105,74,43,31,139,28,11,8,9,9,8,6,2,2,3)
Cm = matrix(C, nrow=43, ncol= 10)
pheatmap(Cm, colorRampPalette(c("grey90", "red", "darkred"))(1000),display_numbers = FALSE, border_color = NA, cluster_row = FALSE, cluster_col = FALSE,show_rownames = T,show_colnames = T, legend = TRUE)

#make a matrix from all three datasets
m <- matrix(c(Am, Bm, Cm),nrow = 43, ncol =30)
#order the matrix m, so you always have column 1 from A, column 1 from B, column 1 from C....
m <- m[, c(matrix(1:ncol(m), nrow = 3, byrow = T))]
#make a list with the colours to be used
mycols = c(colorRampPalette(c("grey90", "purple", "black"))(1000),colorRampPalette(c("grey90", "green", "darkgreen"))(1000),colorRampPalette(c("grey90", "red", "darkred"))(1000))
#if you want to use all colours, but not ordered
pheatmap(m, col = mycols, display_numbers = FALSE, border_color = NA, cluster_row = FALSE, cluster_col = FALSE,show_rownames = T,show_colnames = T, legend = TRUE)

 

R • 1.1k views
ADD COMMENTlink modified 3.2 years ago by Devon Ryan73k • written 3.2 years ago by f.hastert0
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: 1023 users visited in the last hour