0

我希望使用 R 生成一份 1 页的报告,其布局如下:

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

右上: 地块 5(地块 1:4 的 4 倍)

右下角: 表格

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

ggplot我希望使用5 个地块来做到这一点。我可以分别制作所有 6 个项目,但我真的不知道如何将它们整齐地设置到上面布局中的 1 页上。

我已经阅读了一些内容,LaTex但不确定我是否只是在浪费时间。我喜欢基础layout()par(mfrow)功能,但我不知道在这里做什么,因为我需要类似的ggplot2绘图功能。

所以左上角的 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. 那么我如何在右下角得到一张桌子?

我喜欢这张表的外观: grid.table来自gridExtra包的函数。

我需要的表格是 6 行 * 5 列。就像是:

grid.table(head(iris))

唯一的问题是它总是被扔到中间,我不知道如何控制它,让它位于右下角。

有什么建议么?

4

1 回答 1

3

我认为您可以使用 nested 来创建您想要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

在此处输入图像描述

于 2014-07-24T02:56:31.337 回答