报告在1页上编写图表和表格

时间:2014-07-23 21:30:56

标签: r ggplot2 gridextra

我希望用R来制作一份1页的报告,其内容如下:

左上:
情节1情节2
情节3图4

Topright: 情节5(4×与地块1:4一样大)

Bottomright:

此页面将重新运行约100次,以便报告的每个页面都相同,但在这种情况下,每个页面仅适用于不同的商店。

我希望使用ggplot为5个图表执行此操作。我可以单独制作所有6个项目,但我真的不知道如何将它们整齐地放在上面布局的1页上。

我在LaTex上读过一点但不确定我是否只是在浪费时间。我喜欢基本layout()par(mfrow)功能,但我不知道该怎么做,因为我需要ggplot2图的类似功能。

因此,可以使用以下内容完成topleft 4图:

library(gridExtra)
grid.arrange(plot1,plot2,plot3,plot4,ncol=2,nrow=2)

我真正需要的是像

grid.arrange(plot1,plot2,(no plot),(no plot),plot3,plot4,(no plot),(no plot), 
                                                                 ncol=4,nrow=3)

这样的东西会为右上角的情节5准备情节区域,并在桌子底部留下空间。

所以我的问题是

  1. 是如何使用ggplot2绘图按照计划将1:4(相同大小)和5(图1:4的4倍大小)绘制到页面上?
  2. 我怎样才能在右下角找到一张桌子?
  3. 我喜欢这张桌子的外观: 来自grid.table包的gridExtra函数。

    我需要的表格是6行* 5列。类似的东西:

    grid.table(head(iris))
    

    唯一的问题是它总是被抛到中间,我不知道如何控制它以使它位于右下方。

    有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我认为你可以使用嵌套的arrangeGrob来创建你想要的东西。让我来说明一下:

library(ggplot2)
library(gridExtra)

# create a dummy ggplot and its gtable
g <- ggplot(mtcars, aes(wt, mpg)) + geom_point()
gt <- ggplot_gtable(ggplot_build(g))
gt$layout$clip[gt$layout$name=="panel"] <- "off"

# create a table grob
my_table <- tableGrob(head(mtcars))

# arrange the 5 plots and the table
grid.arrange(arrangeGrob(
             arrangeGrob(gt, gt, gt, gt, ncol=2), ## 4 top left panels
                         gt, ncol=2),             ## 1 top right panel
                         my_table, nrow=2)  ## bottom table

enter image description here