1

I am doing a heatmap in R (gplots) and I would like to italicize just my gene names (in my example - gene1, gene2 and gene3). For example:

df <- data.frame(Gene = c ("gene1", "gene2",  "gene3"), value = c(3, 2, 2.5), time = c("10d","10d","10d"))
gplots::heatmap.2(cbind(df$value, df$value), trace= "none", Colv = NA, labCol = "", labRow = df$Gene, Rowv=FALSE)

I tried (did not work):

df <- data.frame(Gene = c ( expression(italic("gene1", "gene2",  "gene3"))), value = c(3, 2, 2.5), time = c("10d","10d","10d"))

or

df <- data.frame(Gene = expression(italic(c ("gene1", "gene2",  "gene3"))), value = c(3, 2, 2.5), time = c("10d","10d","10d"))

Any suggestions?

Greg
  • 3,570
  • 5
  • 18
  • 31
Alex
  • 355
  • 1
  • 7
  • 20

1 Answers1

3

This will do it progammatically:

gene_list <- as.character(df$Gene)

make_italics <- function(x) {
  as.expression(lapply(x, function(y) bquote(italic(.(y)))))
}

heatmap.2(
  cbind(df$value, df$value),
  trace = "none",
  Colv = NA,
  labCol = "",
  labRow = make_italics(gene_list),
  Rowv = FALSE
)
Greg
  • 3,570
  • 5
  • 18
  • 31
  • thanks, it worked, but I have 30 genes, so it is time consuming to include one by one ... – Alex Feb 11 '20 at 22:52
  • @Alex - I've edited the answer to make it work without needing to type all the gene names manually – Greg Feb 12 '20 at 00:10