rheatmaphierarchical-clusteringpheatmaprna-seq

Pull out genes/observations from cutree_rows groups in pheatmap


How can you pull out the genes/observations from the row groups generated from cutree_rows = 3 in pheatmap? would be obj$tree_row$...?

obj <- pheatmap(mat, annotation_col = anno, fontsize_row = 10, show_colnames = F, show_rownames = F, cutree_cols = 3, cluster_cols = FALSE, color = col, scale = 'row',cutree_rows = 3)

I have seen you can find the gene list if you apply k means by running obj$kmeans$cluster like in here is there a way to preserve the clustering in a heatmap but reduce the number of observations?


Solution

  • You can just do cutree on it again, so for example data is such:

    set.seed(2020)
    mat = matrix(rnorm(200),20,10)
    rownames(mat) = paste0("g",1:20)
    obj = pheatmap(mat,cluster_cols = FALSE, scale = 'row',cutree_rows = 3)
    

    enter image description here

    Do cutree :

    cl = cutree(obj$tree_row,3)
    
    ann = data.frame(cl)
    rownames(ann) = rownames(mat)
    
    ann
        cl
    g1   1
    g2   2
    g3   1
    g4   2
    g5   3
    g6   1
    g7   2
    g8   1
    g9   1
    g10  2
    g11  3
    g12  2
    g13  2
    g14  1
    g15  2
    g16  2
    g17  1
    g18  3
    g19  3
    g20  2
    

    We plot this again to see it's correct,

    pheatmap(mat,cluster_cols = FALSE, scale = 'row',cutree_rows = 3,annotation_row=ann)
    

    enter image description here