Specific gene labeling in a heatmap
1
0
Entering edit mode
3.8 years ago
clizama • 0

I'm using pheatmap to make a Heatmap. I was wondering if exist any way using pheatmap in R to add only the name of specific genes in the heatmap. Without do it manually.

Thanks Carlos

RNA-Seq • 6.5k views
ADD COMMENT
0
Entering edit mode

You can set the names that are not of interest to you to empty vectors (I think).

Apart from that, the ComplexHeatmap package seems to allow you to do just that without a hack like the one I suggested. You can transfer your pheatmap command into ComplexHeatmap universe following these code details.

ADD REPLY
0
Entering edit mode

I tried. ComplexHeatmap

library(ComplexHeatmap) I used the test examples just to see how it work. Then I run: pheatmap(test) I got these error: Error in pheatmap(test) : could not find function "pheatmap"

any guest I can imagine has to be something simple o fix.

ADD REPLY
0
Entering edit mode

Don't worry I fixed, thanks

ADD REPLY
0
Entering edit mode

Thanks guys I will try both option.

ADD REPLY
0
Entering edit mode

do report back what ended up working for you so that this post may be as useful as possible for future users

ADD REPLY
0
Entering edit mode

Finally, I took the suggestion from papyrus and your suggestion with ComplexHeatmap, The Script looks like that and work really good for me.

 data <- read.csv("/root/heatmap.csv", header = TRUE, 
 stringsAsFactors=F) data_mat <- data %>% column_to_rownames("Gene")
 %>% # turn the geneid column into rownames as.matrix() head(data_mat)

 my_colors = c("blue", "black", "yellow") my_colors =
  colorRampPalette(my_colors)(50) colMeta_df <- data.frame(Treatment =
  c(rep("D", 1), rep("A", 4), rep("B", 3), rep("C", 3)), stringsAsFactors = F,
   row.names = colnames(data_mat)) 

genelist <- c("geneA", "geneX") 
labels <- rownames(data_mat)  labels[!labels %in%
genelist] <- ""  pheatmap(mt, labels_row = labels)


ComplexHeatmap(data_mat,

                          scale = "row",
                          color = my_colors,
                           border_color = NA,
                         fontsize_row = 8,
                         fontsize_col = 12,       
                         cluster_rows = TRUE,
                         clustering_distance_rows = "euclidean",
                        clustering_method = "complete",
                       cluster_cols = FALSE,
                       labels_row = labels, 
                      labels_col = NULL,
                     cellwidth = 14,
                    cellheight = 0.25,
                    main="Gene Expression")
ADD REPLY
2
Entering edit mode
3.8 years ago
Papyrus ★ 2.9k

For the pheatmap package that behaviour is controlled by the labels_row or labels_col arguments. These labels are by default the rownames and colnames of your matrix. To only show specific names, set the rest to empty characters "". For example:

You have this matrix, where the rows are genes:

mt <- matrix(1:9,3,3)
colnames(mt) <- c("a","b","c")
rownames(mt) <- c("a","b","c")
pheatmap(mt)

You only want to represent genes "a" and "c":

# Your list of genes
    genelist <- c("a","c") 
# Labels to plot
    labels <- rownames(mt) 
# Set the rest of genes to ""
    labels[!labels %in% genelist] <- "" 
    pheatmap(mt, labels_row = labels)
ADD COMMENT

Login before adding your answer.

Traffic: 2609 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6