2015-08-21 9 views
2

Я хотел бы, чтобы удалить большое расстояние, которое вставляется по умолчанию между участками и столом в grid.arrange, как показано на MWE ниже:Удалить белое пространство между участками и столом в grid.arrange

require(ggplot2) 
require(gridExtra) 

list1=data.frame(mtcars[1:3, ]) # Dummy data 
p1 = ggplot(list1, aes(mpg,cyl)) + geom_point() # Dummy plot 
p2 = ggplot(list1, aes(disp,hp)) + geom_point() # Dummy plot 
plots <- arrangeGrob(p1, p2,nrow=2) 

table <- tableGrob(list1) 
grid.arrange(plots, table) 

Я подозреваю, что это поведение связано с таблицейGrob, но я не мог найти ответа на эту проблему.

Заранее благодарен!

+0

бы эту помощь? http://stackoverflow.com/questions/13299496/reduce-space-between-grid-arrange-plots – Nemesi

+0

Не совсем, он ведет себя по-разному между двумя ggplots, что между сюжетом и tableGrob. Но спасибо! – JohnBee

+0

Возможный дубликат [Сокращение пространства между двумя графиками в grid.arrange] (http://stackoverflow.com/questions/26146735/reducing-space-between-two-plots-in-grid-arrange) – kdarras

ответ

5

grid.arrange() по умолчанию выделяет равное пространство для каждой ячейки. Если вы хотите плотную посадку вокруг определенного Grob, вы должны запросить его размер, и передать его в явном виде,

library(grid) 
th <- sum(table$heights) # note: grobHeights.gtable is inaccurate 
grid.arrange(plots, table, heights = unit.c(unit(1, "null"), th)) 

enter image description here

+0

Этот ответ не дает мне ответа : 'Ошибка в arrGrob (...): не удалось найти функцию" unit.c "' – ecoe

2

Я на самом деле нашел параметр правящему интервал между grobs: высота, см ниже линии

grid.arrange(plots, table, heights=c(5,1))