Примерно так
library(pheatmap)
mat = cbind(genes=1:100,
matrix(rnorm(150*100,mean = rep(1:3,c(39*100,40*100,71*100))),ncol=150))
colnames(mat)[2:ncol(mat)] = paste0("col",1:150)
Вам нужно знать, сколько в каждой группе, из того, что вы предоставили, я посчитал это:
Группа1: 39 Группа2: 40 Group3: 71
Таким образом, вам нужно создать data.frame, который имеет те же имена строк, что и ваша матрица, и сообщить ему, что это group1,2 et c.
DF = data.frame(Groups=rep(c("Group1","Group2","Group3"),c(39,40,71)))
rownames(DF) = colnames(mat)[2:ncol(mat)]
Затем мы строим график, mat[,-1]
означает исключение первого столбца, вам нужно указать, куда вставить пробел, и для вашего примера он равен 39,79 и 80, потому что мы исключили первый столбец :
pheatmap(mat[,-1],cluster_cols=FALSE,
annotation_col=DF,gaps_col = cumsum(c(39,40,71)))