R grid和gridExtra:tableGrob不遵守视口中的宽度和高度

时间:2018-09-19 20:02:03

标签: r gridextra r-grid

我想在ggplot2图上放置几个表,它们在不同的位置,以不同的大小以及以动态调整大小的方式放置。我欢迎任何更好的解决方案,但是我的想法是使用视口实现所有这些目标(grid.table确实有一个vp参数)。

但是,看来tableGrob只是无视width的{​​{1}}和height设置! (有趣的是,它确实了解vpx。)这是一个最小的可重现示例:

y

1 个答案:

答案 0 :(得分:2)

tableGrob默认扩展为以给定的字体大小适合文本;如果要将其拉伸到视口,则必须手动分配自定义宽度/高度,以免出现内容溢出的风险。

library( grid )
library( gridExtra )
data( iris )

grid.newpage()
vp <- viewport( x = 0.4, y = 0.4, width = 0.3, height = 0.3 ) 
grid.rect( vp = vp)
tg <- tableGrob( iris[ 1:3, 1:2 ], vp = vp)
tg$widths[-1] <- rep(unit(1/2,"null"), 2)
tg$heights <- rep(unit(1/nrow(tg),"null"), nrow(tg))
grid.draw(tg)

enter image description here