2017-07-28 43 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即可達成交易。