tableGrob没有在使用R中的grid.arrange的两个图之间完全显示

时间:2016-01-22 12:54:22

标签: r ggplot2

当我使用grid.arrange将3个绘图输出到html报告时,我的具体问题很明显,有时会裁剪最后一个绘图(这是一个tableGrob)。

我正在使用3个单独的grid.arrange()语句,使用knitr在html报告中放置一个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()语句。我猜我真正的问题是我不明白这里是如何操纵属性的。

非常感谢帮助。

1 个答案:

答案 0 :(得分: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包装在print()语句中。