2016-03-14 4 views
6

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

Есть четыре участка:

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) 

raw graph

И теперь , Я хочу добавить заголовок ниже каждого графика в этом графике, что-то вроде изображения ниже (я его модифицировал в Word, так что это не красиво) modified pic Прежде чем спрашивать, я искал в SO, и я знаю, как добавить заголовок ниже одного участка, например, использовать grid.text() или эти три метода Displaying text below the plot generated by ggplot2 или element_text(vjust=-10), но я не могу применить его к четырем участкам на одном графике. Между тем, у меня есть некоторые результаты в базовом графике How to add a title to each plot in R? или Common main title of a figure panel compiled with par(mfrow), то есть то, что я хочу провести его в ggplot2, и заголовок ниже каждого графика, как его реализовать? Спасибо!

+0

Что-то вдоль линии, что сделал Боб Rudis? https://twitter.com/hrbrmstr/status/709069752879214592 –

+0

@ RomanLuštrik Спасибо, но название по-прежнему находится на вершине сюжета, что Боб использует название и подзаголовок –

ответ

7

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

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) 

enter image description here

+0

Удивительно, вы решили этот вопрос отлично, но я все еще интересно, почему пакет 'ggplot' не имеет метода добавления заголовка под графиком directlly –

Смежные вопросы