Использование pheatmap в rangeGrob

Я пытаюсь нанести два графика на один и тот же.jpg с помощью rangeGrob(). Я только начал изучать гриды и гробы и думаю, что знаю, в чем проблема: pheatmap - это объект сетки, содержащий объекты гробов, не позволяющий мне поместить его в rangeGrob. Это правда?

Должен ли я каким-то образом поместить qplot в сетку и pheatmap в сетку, а затем поместить эти сетки в новую сетку?

library(grid)
library(gridExtra)
library(pheatmap)
library(ggplot2)
hmdat=rbind(c(1,2,3),
            c(3,4,5),
            c(5,6,7))
hm=pheatmap(hmdat)
qp=qplot(1,1)
lm=rbind(c(1,2,2),
         c(1,2,2))
jpeg("plots.jpg")
arrangeGrob(qp,hm, layout_matrix=lm)
dev.off()

Приведенный выше фрагмент кода работает очень хорошо при использовании

arrangeGrob(qp,qp, layout_matrix=lm)

1 ответ

Я не уверен, хотите ли вы иметь 6 цифр или две цифры, одна из которых будет вдвое шире другой (я попытался сделать минимальное изменение кода):

library(grid)
library(gridExtra)
library(pheatmap)
library(ggplot2)
hmdat=rbind(c(1,2,3),
            c(3,4,5),
            c(5,6,7))
hm=pheatmap(hmdat)
qp=qplot(1,1)
lm=rbind(c(1,2,2),
         c(1,2,2))
grid.arrange(grobs = list(qp,hm[[4]]), layout_matrix = lm)

который даст вам:

Как упомянуто в комментарии @hrbrmstr, вы должны использовать 4-й элемент в объекте pheatmap. Также не забудьте предоставить grobs как список к grid.arrange

Другие вопросы по тегам