R grid и gridExtra: tableGrob не учитывает ширину и высоту в области просмотра - PullRequest
0 голосов
/ 19 сентября 2018

Я хочу разместить несколько таблиц на фигуре ggplot2, в разных местах, в разных размерах и таким образом, чтобы они динамически изменяли размеры.Я приветствую любое лучшее решение, но моя идея заключалась в том, чтобы использовать окна просмотра для достижения всех этих целей (grid.table имеет аргумент vp).

Однако, похоже, что tableGrob просто игнорирует width и height настройки vp!(Интересно, что он понимает x и y.) Вот минимальный воспроизводимый пример:

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

grid.newpage()
grid.rect( vp = viewport( x = 0.4, y = 0.4, width = 0.3, height = 0.3 ) )
grid.table( iris[ 1:3, 1:2 ], vp = viewport( x = 0.4, y = 0.4, width = 0.3, height = 0.3 ) )

1 Ответ

0 голосов
/ 20 сентября 2018

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)

tableGrob image

...