2017-07-28 76 views
2

我试图从R中创建一个包含data.frames和ggplots的多页PDF文件。我设法将data.frames转换为grobs并使用grid.arrange函数。R - 如何在PDF中的一页上打印三个以上的表格

我现在面临的问题是,我想在PDF的第一页上打印五个表格/ grobs,一个在另一个下面。在第2页,我只需要一个表格,因为它包含不同种类的数据。第3页将包含一个ggplot。它可以在一页上放三张表完美地工作,但当我尝试使用四张或更多页时,它会将它们打印成两列,并且它们会重叠。

这里是我试过至今:

# Load required packages 
library(gridBase) 
library(gridExtra) 
library(ggplot2) 

# Transform tables into grobs 
Table1 <- tableGrob(df1) 
Table2 <- tableGrob(df2) 
Table3 <- tableGrob(df3) 
Table4 <- tableGrob(df4) 
Table5 <- tableGrob(df5) 
Table6 <- tableGrob(df6) 

# Create the PDF file 

pdf("file.pdf", height = 15, width = 20) 
layout(matrix(c(1,2,3,4,5,6), 1, 6, byrow = TRUE)) 
grid.arrange(Table1, Table2, Table3, Table4, Table5) 
grid.arrange(Table6) 
grid.arrange(ggplot1) 
dev.off() 

有谁知道我错了?

非常感谢!

干杯, 蒂尔曼使用或仰视\newpage功能的变化

This is what the first page of the PDF looks like as soon as I use more than three tables. I want them to be all in one column

+2

就像一个评论:如果你只绘制一个grob,最好使用'grid.draw(Table6)'而不是'grid.arrange(Table6)'(和ggplot1相同)。 'grid.arrange()'只对多个grobs有意义,否则你会用不使用的布局为图形增加不必要的复杂性。 – baptiste

回答

0

试试?这超出了大块。

+0

非常感谢您的回复!我试过了,但它会给我和以前一样的结果。我认为这不是我正在寻找的,因为我已经有了我想通过使用新的grid.arrange()命令所需的页数。我想要的是收集在同一页上的前五个表。 –

+0

刚刚添加了PDF输出的第一页的图片与来自mtcars的数据 –

1

刚刚解决它 - 当然有一个简单的解决方案,我没有考虑。

grid.arrange(Table1, Table2, Table3, Table4, Table5, ncol = 1, nrow = 5) 

只需添加ncol和nrow即可达成交易。