在Rmarkdown / knitr-HTML文档中使用tableGrob对齐和间距

时间:2015-09-25 18:24:55

标签: r html-table knitr r-markdown gridextra

使用tableGrob()包中的精彩功能gridExtra绘制由Rmarkdown和knitr生成的html文档中的表时,我遇到以下问题。

这是一个可重复的例子:

library(datasets)
library(dplyr)
mtcars$cyl <- as.factor(mtcars$carb)
carb.mpg <- mtcars %>%
            select(carb,mpg) %>%
            group_by(carb)   %>%
            summarise_each(funs(sum(.,na.rm=TRUE)),-carb) %>%
            arrange(desc(mpg))
##plot the table
tab <- tableGrob(carb.mpg, cols=c("carb","mpg"), 
              theme=ttheme_minimal())
grid.arrange(tab, top=textGrob("Cars MPG per CARB",gp=gpar(fontsize=16,font=1)) )

对于knitr一般块选项:

title: "Test with cars"
output: 
html_document:
keep_md: true

{r setoptions, echo=FALSE} library(knitr) opts_chunk$set(message=FALSE,warning=FALSE)

从附加快照中可以看到的问题是表格及其标题和图例之间的巨大空间 enter image description here。如果我可以在文档中左对齐表格,也会很好。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

你可以试试这个

self.flags

enter image description here

答案 1 :(得分:0)

经过一些调整后,我发现可以使用viewport(x和y)控制表格的位置;宽度/高度似乎已经过时。

#plot the table
 tab <- tableGrob(carb.mpg, cols=c("carb","mpg"), 
          theme=ttheme_minimal())
 grid.newpage()
 vp  <- viewport(width=0.90,height=0.90,x=0.10,y=0.80,clip="on")
 pushViewport(vp)
 grid.draw(tab) 

这只能部分地解决问题:巨大的垂直空间仍在那里。enter image description here

也许这为解决问题提供了一些方向?

编辑:我控制空格/边距的一种方法是减少knitr块选项中的数字大小参数,即

{r plot mpg cars, fig.height=value, fig.width=value}