Использование 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