Добавьте заголовок под графиком с четырьмя графиками в ggplot

Из-за конфиденциальности данных я использую mtcar набор данных в ggplot2, чтобы объяснить свой вопрос.

Всего четыре сюжета:

g1 <- ggplot(mtcars,aes(mpg,wt)) + geom_point()
g2 <- ggplot(mtcars,aes(mpg,disp)) + geom_point()
g3 <- ggplot(mtcars,aes(mpg,drat)) + geom_point()
g4 <- ggplot(mtcars,aes(mpg,qsec)) + geom_point()

Я хочу поместить эти четыре графика в один график, поэтому я использую функцию grid.arrange() в пакете grid.Extra:

grid.arrange(g1,g2,g3,g4,ncol=2)

необработанный график

А теперь я хочу добавить заголовок под каждым графиком на этом графике, примерно как на картинке ниже (я изменил его в Word, поэтому он некрасивый)  modified pic Прежде чем спрашивать, я поискал в SO, и я знаю, как добавить заголовок под одним сюжетом, например, использовать grid.text() или эти три метода Отображение текста под графиком, созданным ggplot2 или element_text(vjust=-10), но я не могу применить его к четырем графикам на одном графике. Между тем, у меня есть некоторые результаты в базовом графике Как добавить заголовок к каждому графику в R? или Обычный основной заголовок панели рисунков, скомпилированной с помощью par (mfrow), вопрос заключается в том, что я хочу провести его в ggplot2, и заголовок находится под каждым графиком, как мне его реализовать? Спасибо!


person Ling Zhang    schedule 14.03.2016    source источник
comment
Что-то вроде того, что сделал Боб Рудис? twitter.com/hrbrmstr/status/709069752879214592   -  person Roman Luštrik    schedule 14.03.2016
comment
@ RomanLuštrik Спасибо, но заголовок все еще находится в верхней части сюжета, Боб использует заголовок и подзаголовок   -  person Ling Zhang    schedule 14.03.2016


Ответы (1)


вы можете сначала обернуть каждый сюжет с помощьюrangeGrob,

g1 <- g2 <- g3 <- g4 <- ggplot()
titles = LETTERS[1:4]
plots = mapply(arrangeGrob, list(g1,g2,g3,g4), 
               bottom = titles, SIMPLIFY=FALSE)
grid.arrange(grobs = plots, ncol=2)

введите описание изображения здесь

person baptiste    schedule 14.03.2016
comment
Удивительно, вы отлично решили этот вопрос, но мне все еще интересно, почему пакет ggplot не имеет способа напрямую добавить заголовок под график - person Ling Zhang; 14.03.2016