Thank you, I was having exactly the same issue! Do you know how to customize, let's say, the "fontface" of just a few "genes_to_show" to make some "plain" and others "bold"? Perhaps using gpar in labels_gp, but the indexing here seems also challenging...
Issues marking genes in ComplexHeatmap
Hi,
I was working on marking genes of interest on the heatmap via ComplexHeatmap R package. Instead of specifying row numbers in anno_mark function, I specified a vector of genes to mark on the heatmap (see below) and used a combination of which() and %in% to isolate the row indices that match the gene character vector. It seems like the order of line marking differs compared to row labels (example screenshot below). Please assist how to resolve this issue? Why does the order differ. I am working with 500 diff.exp genes, hence I need to mark atleast 30 genes.
Thank you,
Toufiq
Genes to be marked
genes_to_show <- c("C4orf54", "CCN1", "ADAMTS4", "ARX", "CORO1A", "CMC4", "CDH11", "CCDC102B", "CRYAB", "CCN2")
mark_at = which(rownames(matrix) %in% genes_to_show)
ha = rowAnnotation(foo = anno_mark(at = mark_at, labels = genes_to_show))
Plot
library(ComplexHeatmap)
pdf("Heatmap.pdf",height = 10, width = 7)
Heatmap(matrix,
name = "Z-score - log2CPM",
col = circlize::colorRamp2(c(-2, 0, 2), c("cyan", "black", "yellow")),
na_col = "grey",
cluster_rows = T,
cluster_columns = F,
top_annotation = column_ha,
right_annotation = ha,
column_split = Sample_metadata$Category,
row_names_max_width = unit(10,"in"),
row_title_gp = gpar(fontsize = 15),
column_title_gp = gpar(fontsize = 20),
column_names_gp = gpar(fontsize =10),
row_names_gp = gpar(fontsize =3),
show_column_names = T)
dev.off()

• 4,436 views
•
link
1 answer
I modified rowAnnotation as below, this was resolved.
ha = rowAnnotation(foo = anno_mark(at = which(rownames(my_matrix) %in% genes_to_show),
labels = rownames(my_matrix)[rownames(my_matrix)%in%genes_to_show]))
• 0 views
•
link
• 0 views
•
link
Log in to answer this question.
I think the issue is that the row clustering is changing the order of the row names from what was defined in your row annotation. Yes, row annotation should change accordingly, but maybe there is some disconnect? That's my best guess any way...
jv thank you for the reply. I did try without row clustering too but the same issue happens. I uncommented column split too, same issue. Not resolved.