Rmarkdown/knitr-HTML 文档中的 tableGrob 对齐和间距
tableGrob alignment and spacing in Rmarkdown/knitr-HTML document
在使用 gridExtra
包中的 tableGrob()
功能在 Rmarkdown 和 [=15 生成的 html 文档中绘制 table 时,我遇到以下问题=].
这是一个可重现的例子:
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)
从所附快照中可以看出,问题是table及其标题和图例之间的巨大space .如果能left-align文档中的table就好了
如有任何帮助,我们将不胜感激。
你可以试试这个
tg <- textGrob("Cars MPG per CARB", gp=gpar(fontsize=16,font=1))
grid.arrange(tg, tab, heights=unit.c(grobHeight(tg), sum(tab$heights)),
vp=viewport(x=unit(0,"npc") +
0.5*unit.pmax(grobWidth(tg),
sum(tab$widths))))
经过一些调整,我发现 table 的位置可以使用 viewport
(x 和 y)来控制; width/height 似乎过时了。
#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)
这仅部分解决了问题:巨大的 垂直 space 仍然存在。
也许这为解决问题提供了一些方向?
编辑:我控制白色 spaces/margins 的一种方法是减少 knitr
块选项中的图形大小参数,即,
{r plot mpg cars, fig.height=value, fig.width=value}
在使用 gridExtra
包中的 tableGrob()
功能在 Rmarkdown 和 [=15 生成的 html 文档中绘制 table 时,我遇到以下问题=].
这是一个可重现的例子:
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)
从所附快照中可以看出,问题是table及其标题和图例之间的巨大space
如有任何帮助,我们将不胜感激。
你可以试试这个
tg <- textGrob("Cars MPG per CARB", gp=gpar(fontsize=16,font=1))
grid.arrange(tg, tab, heights=unit.c(grobHeight(tg), sum(tab$heights)),
vp=viewport(x=unit(0,"npc") +
0.5*unit.pmax(grobWidth(tg),
sum(tab$widths))))
经过一些调整,我发现 table 的位置可以使用 viewport
(x 和 y)来控制; width/height 似乎过时了。
#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)
这仅部分解决了问题:巨大的 垂直 space 仍然存在。
也许这为解决问题提供了一些方向?
编辑:我控制白色 spaces/margins 的一种方法是减少 knitr
块选项中的图形大小参数,即,
{r plot mpg cars, fig.height=value, fig.width=value}