2016-03-14 28 views
6

Do sự riêng tư của dữ liệu, tôi sử dụng số liệu mtcar trong ggplot2 để giải thích câu hỏi của mình.Thêm tiêu đề bên dưới biểu đồ với bốn ô trong ggplot

Có bốn lô:

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

Tôi muốn đặt bốn lô trong một biểu đồ, vì vậy tôi sử dụng grid.arrange() chức năng trong gói grid.Extra:

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

raw graph

Và bây giờ , tôi muốn thêm tiêu đề bên dưới mỗi cốt truyện trong các đồ thị, một cái gì đó giống như hình dưới đây (tôi đổi nó trong Word, vì vậy nó không phải là đẹp)Trước khi hỏi, tôi đã tìm kiếm trong SO và tôi biết cách thêm tiêu đề bên dưới một ô, ví dụ: sử dụng grid.text() hoặc ba phương pháp Displaying text below the plot generated by ggplot2 hoặc element_text(vjust=-10), nhưng tôi không thể áp dụng nó cho bốn ô trong một biểu đồ. Trong khi đó, tôi đã có một số kết quả trong đồ thị cơ sở How to add a title to each plot in R? hoặc Common main title of a figure panel compiled with par(mfrow), các qustion là tôi muốn tiến hành nó trong ggplot2 và tiêu đề là bên dưới từng lô, làm thế nào để thực hiện nó? Cảm ơn bạn!

+0

cái gì đó dọc theo dòng của những gì Bob Rudis đã làm? https://twitter.com/hrbrmstr/status/709069752879214592 –

+0

@ RomanLuštrik Cảm ơn bạn, nhưng danh hiệu vẫn là trên đỉnh của âm mưu, những gì Bob sử dụng là tiêu đề và phụ đề –

Trả lời

7

bạn có thể quấn từng lô với arrangeGrob đầu tiên,

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

tuyệt vời, bạn đã giải quyết câu hỏi này xuất sắc, nhưng tôi vẫn tự hỏi tại sao gói 'ggplot' không có phương thức để thêm tiêu đề bên dưới biểu đồ trực tiếp –

Các vấn đề liên quan