在ArrangeGrob中使用Pheatmap

Xiz*_*zam 6 r grob pheatmap

我正在尝试使用rangingGrob()在相同的.jpg中绘制两个图。我才刚刚开始学习网格和grobs,我想我知道问题出在哪里:pheatmap是一个网格对象,包含grob对象,不允许我将其放在rangingGrob中。这是真的?

我是否需要以某种方式将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()
Run Code Online (Sandbox Code Playgroud)

上面的代码片段在使用时运行良好

arrangeGrob(qp,qp, layout_matrix=lm)
Run Code Online (Sandbox Code Playgroud)

Meh*_*ian 6

我不确定您是想要 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::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)
Run Code Online (Sandbox Code Playgroud)

这会给你: pheatmap 和 ggplot 在网格中的组合

与您可以并排使用多个 pheatmap 的方式相同:

library("grid")
library("gridExtra")
library("pheatmap")

hmdat <- rbind(c(1,2,3),
            c(3,4,5),
            c(5,6,7))

hm <- pheatmap::pheatmap(hmdat)

lm <- rbind(c(1,2),
         c(3,3))
grid.arrange(grobs = list(hm[[4]],
                          hm[[4]],
                          hm[[4]]),
             layout_matrix = lm)
Run Code Online (Sandbox Code Playgroud)

热图网格

正如评论中提到的@hrbrmstr,您应该使用 pheatmap 对象中的第 4 项。还记得将grobs列表提供给grid.arrange