Как разделить тепловую карту или нарисовать границу с заданным диапазоном c? - PullRequest
1 голос
/ 19 февраля 2020

У меня есть матрица выражений, содержащая три группы. Мне нужно нарисовать или разделить тепловую карту с указанным диапазоном столбцов c.

Total number of colums: 151 where 1st column is gene ids
Group1: 2:40
Group2: 41:80
Group3: 81:151

Я искал разбиение тепловой карты и получил несколько совпадений, таких как this . Но они основаны на определенных c кластерах. Мне нужно указать свой диапазон как (2:40, 41:80, 81:151) для разделения или создания границы для тепловой карты

1 Ответ

2 голосов
/ 19 февраля 2020

Примерно так

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

enter image description here

...