Я пытаюсь построить несколько графиков на одной странице. Я знаю такие функции, как gridExtra::grid.arrange
, которые могут строить графики, созданные пакетом ggplot2
. Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть два графика (и density.plot
ниже), которые генерируются пакетом ggplot2
и одним сюжетом, сгенерированным с использованием функции limma::vennDiagram
. Я пробовал ниже, но он не работает:R: печать нескольких типов графиков на одной странице
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
.
UPDATE: Я попытался с помощью 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()
Любая помощь будет высоко ценится!
https://cran.r-project.org/web/packages/gridBase/vignettes /gridBase.pdf – Roland
@Roland См. мое обновление –
Я не вижу, где вы используете функции из пакета gridBase. – Roland