Сделать метки строк курсивом в тепловой карте.2

Я пытаюсь выделить метки строк курсивом, используя функцию R heatmap.2. Варианта по умолчанию нет, и я не могу найти обходной путь, установив, например, par(font=3). Как сделать метки строк курсивом в heatmap.2?

set.seed(123)
data = matrix(sample(100), nrow=10, ncol=10)
rownames(data) = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")

library(gplots)

heatmap.2(data,
           Colv=TRUE,
           Rowv=TRUE,
           xlab=NA,
           ylab=NA)

person Erik    schedule 25.07.2019    source источник
comment
expression(italic()) работает здесь. Просто нужно найти способ прокрасться в функцию heatmap.2.   -  person M--    schedule 25.07.2019
comment
К сожалению, это приводит только к строке, помеченной: курсив (B). Любые предложения о том, как подойти к скрытому в тепловой карте.2?   -  person Erik    schedule 26.07.2019
comment
Запустите heatmap2 без каких-либо аргументов. Появится исходный код. Вам нужно изменить функцию axis(...).   -  person M--    schedule 26.07.2019


Ответы (1)


Вы можете использовать аргументы labCol и labRow для heatmap.2 для передачи меток. Нам просто нужно выяснить, как передать их в виде списка plotmath выражений. Я всегда нахожу это болезненным, так как делаю это недостаточно часто, чтобы запомнить подходящие заклинания, но смог собрать код, адаптировав этот ответ R-справки. Обратите внимание, что матрица должна иметь имена столбцов, которые я добавил в приведенном ниже коде.

library(gplots)

# Fake data
set.seed(123)
data = matrix(sample(100), nrow=10, ncol=10)
rownames(data) = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
colnames(data) = 1:ncol(data)

heatmap.2(data,
          Colv=TRUE,
          Rowv=TRUE,
          labCol=as.expression(lapply(colnames(data), function(a) bquote(italic(.(a))))),
          labRow=as.expression(lapply(rownames(data), function(a) bquote(italic(.(a))))),
          xlab=NA,
          ylab=NA)

введите здесь описание изображения

person eipi10    schedule 26.07.2019