Я пытаюсь построить несколько графиков на одной странице. Я знаю такие функции, как 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
и воспользовался ими. - person Komal Rathi   schedule 09.11.2015