Я бы рекомендовал использовать пакет ComplexHeatmap
( веб-сайт ; Gu et al, 2016 ).Вы можете установить его с помощью devtools::install_github("jokergoo/ComplexHeatmap")
.
. Он имеет больше функциональных возможностей, но вам также нужно тратить больше времени (например, аннотации строк и масштабирование матрицы).
library(ComplexHeatmap)
# Create annotation for rows
my_sample_col_ano <- rowAnnotation(sample = my_sample_col$sample,
show_annotation_name = FALSE)
# Scale original matrix row-wise
matS <- t(apply(mat, 1, scale))
# Plot heatmap
Heatmap(matS,
# Remove name from fill legend
name = "",
# Keep original row/col order
row_order = rownames(matS), column_order = colnames(matS),
# Add left annotation (legend with tumor/normal)
left_annotation = my_sample_col_ano,
# ACTUAL SPLIT by sample group
row_split = my_sample_col$sample,
show_row_names = FALSE, show_column_names = FALSE,
show_row_dend = FALSE, show_column_dend = FALSE,
row_title = NULL)
Если вы хотите использовать оригинальный pheatmap
передать аргумент gaps_row
, который равен размеру вашей группы (то есть, нормальному):
pheatmap(mat,
scale='row',
gaps_row = 5,
annotation_row = my_sample_col,
annotation_names_row=F,
cluster_rows = FALSE,
cluster_cols = FALSE,
show_colnames = FALSE,
show_rownames = FALSE)
Если вместо жесткого числового значения в gaps_row
можно указать больше групп, чем две, вы можете передать этот фрагмент (head(as.numeric(cumsum(table(my_sample_col$sample))), -1)
).