我想在同一页上绘制多个图形。我知道像gridExtra::grid.arrange
这样的函数可以绘制由ggplot2
包生成的图形。但是我遇到的问题是,我有两个图形(下面的bar.plot
和density.plot
),它们由ggplot2
包生成,并且还有一个使用limma::vennDiagram
函数生成的图形。我已经尝试了以下代码,但没有成功:
output <- paste('summary.pdf')
pdf(output,width = 25,height = 20)
par(mfrow = c(3, 3))
plot(bar.plot)
plot(density.plot)
print(vennDiagram(dat.venn, circle.col = col,cex = c(3,3,3)))
invisible(dev.off())
dat.venn是VennCounts类型的数据:
I-H-10003-T1-D1 I-H-10003-T2-D1 I-H-10003-T3-D1 Counts
0 0 0 0
0 0 1 41
0 1 0 81
0 1 1 66
1 0 0 10
1 0 1 2
1 1 0 4
1 1 1 56
attr(,"class")
[1] "VennCounts"
我找不到与grid.arrange
函数兼容的维恩图包。我认为VennCounts
无法通过grid.arrange
函数打印出来,而ggplot2
图可以使用par
函数打印。
更新: 我尝试使用pushViewport,但仍然将维恩图打印在下一页:
pdf(output,width = 25,height = 20)
# Create layout : nrow = 2, ncol = 2
pushViewport(viewport(layout = grid.layout(2, 2)))
# A helper function to define a region on the layout
define_region <- function(row, col){
viewport(layout.pos.row = row, layout.pos.col = col)
}
# Arrange the plots
print(bar.plot, vp = define_region(1, 1:2))
print(density.plot, vp = define_region(2, 1))
print(vennDiagram(dat.venn, circle.col = col,cex = c(3,3,3)), vp = define_region(2, 2))
dev.off()
任何帮助都将不胜感激!
pushViewport
,所以我用了它。 - Komal Rathi