我希望用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准备情节区域,并在桌子底部留下空间。
所以我的问题是
我喜欢这张桌子的外观:
来自grid.table
包的gridExtra
函数。
我需要的表格是6行* 5列。类似的东西:
grid.table(head(iris))
唯一的问题是它总是被抛到中间,我不知道如何控制它以使它位于右下方。
有什么建议吗?
答案 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