2016-01-22 44 views
2

我的具体问题是显而易见的,当我输出3使用grid.arrange的html报告,有时最后一个plot(这是一个tableGrob)被裁剪。tableGrob没有完全显示使用grid.arrange在R两个情节之间

我使用3个单独的grid.arrange()语句在html报告中使用knitr放置boxplot,时间序列图和tableGrob。被用来输出

代码是:

grid.arrange(p1,top=main) 
    grid.arrange(p2TS) 

    if(nrow(over5)>0){ 
    tg=tableGrob(over5,theme=tt3,rows = NULL) 
    tg$widths = unit(rep(1/4, ncol(tg)), "npc") 
    grid.arrange(tg) 

    } 

这将显示完美当Tg对象具有小于大约10行的数据。

但是在测试更大的数据集时,我发现grid.arrange(tg)在报告中输出固定高度的“窗口”,这是不可取的。

我的问题是如何改变grid.arrange(tg)输出的高度以匹配内部包含的tg对象的高度(带有一些顶部和底部边距)?

我希望了解这些属性改变的机制,以便我可以微调我的输出。如果可能的话,我会有一个3x1的网格在一行代码中显示所有3个输出,但所有的图都会缩合并且无法读取,这就是为什么我有3个单独的grid.arrange()陈述。我猜我真正的问题是我不明白这里属性如何操纵。

非常感谢帮助。

+0

请提供[可重现的示例](http://stackoverflow.com/a/5963610/1412059),其中包括您的knitr代码。 – Roland

+0

嗨,罗兰,道歉质量差的问题,我已经找到了一个解决方法使用'print(knitr :: kable(tg))'而不是'grid.arrange(tg)',它现在可以正常工作 –

+0

如果你找到了解决方案,鼓励你回答你自己的问题。 – Roland

回答

1

我发现了一个变通方法来使用kable它打印一个HTML表格报告,而不是grid.arrange()tableGrob()

grid.arrange(p1,top=main) 
    grid.arrange(p2TS) 

    if(nrow(tg)>0){ 
    print(knitr::kable(tg)) 
    } 

此外,因为我是在for循环内运行此代码,我需要上使用一种解决方法this issue page,这要求我将陈述中的kable包裹起来。