2016-03-14 14 views
6

Ze względu na prywatność danych używam zestawu danych mtcar w ggplot2 do wyjaśnienia mojego pytania.Dodaj tytuł pod wykresem z czterema wykresami w ggplot

Istnieją cztery działki:

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() 

chcę umieścić te cztery działki w jednym wykresie, więc używam grid.arrange() funkcji w pakiecie grid.Extra:

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

raw graph

a teraz , Chcę dodać tytuł poniżej każdego wykresu na tym wykresie, coś jak obrazek poniżej (zmodyfikowałem go w programie Word, więc nie jest piękny) modified pic Przed pytaniem, Szukałem w SO, i wiem, jak dodać tytuł poniżej jednej działce, na przykład użyć grid.text() czy te trzy metody Displaying text below the plot generated by ggplot2 lub element_text(vjust=-10), ale nie można go stosować do czterech działek na jednym wykresie. Tymczasem, mam pewne wyniki w podstawowym grafie How to add a title to each plot in R? lub Common main title of a figure panel compiled with par(mfrow), qustion polega na tym, że chcę go przeprowadzić w ggplot2, a tytuł jest poniżej każdego wykresu, jak go zaimplementować? Dziękuję Ci!

+0

Coś na wzór tego, co Bob Rudis zrobił? https://twitter.com/hrbrmstr/status/709069752879214592 –

+0

@ RomanLuštrik Dziękuję, ale tytuł jest wciąż na szczycie fabuły, a Bob używa tytułu i podtytułu. –

Odpowiedz

7

można owinąć każdą działkę z arrangeGrob pierwszy

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

Zadziwiające, świetnie to rozwiązałeś, ale wciąż Zastanawiam się, dlaczego pakiet 'ggplot' nie ma metody bezpośredniego dodawania tytułu pod wykresem –

Powiązane problemy