2015-04-15 16 views
6

Tôi đang cố sắp xếp một vài ô được tạo bởi ggplot2 bằng gói gridExtra.Lỗi khi thêm tiêu đề chính với chỉ số trong gridExtra

library(ggplot2) 
library(gridExtra) 
p1 <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point() 
p2 <- ggplot(iris, aes(Sepal.Length, Petal.Length)) + geom_point() 
p3 <- ggplot(iris, aes(Species, Sepal.Width)) + geom_point() 
p4 <- ggplot(iris, aes(Sepal.Width, Petal.Width)) + geom_point() 
grid.arrange(main="CO2Exp", p1, p2, p3, p4, ncol=2) 

Khi tôi cố gắng để có một tiêu đề chính, follwing hoạt động tốt.

grid.arrange(main="CO2Exp", p1, p2, p3, p4, ncol=2) 

Nhưng khi tôi thử với expression để có được chỉ số phụ,

grid.arrange(main=expression(paste(CO[2], "Exp")), p1, p2, p3, p4, ncol=2) 

tôi nhận được lỗi sau

Error in valid.data(rep(units, length.out = length(x)), data) : 
    no 'grob' supplied for 'grobwidth/height' unit 

Làm thế nào để sửa lỗi này?

Tôi đang sử dụng R _3.1.3, gridExtra _0.9.1 và ggplot2 _1.0.1

+1

grid.arrange thực hiện kiểm tra thô cho 'is.character', được chuyển tới textGrob, nhưng các biểu thức không vượt qua thử nghiệm. Giải pháp thay thế là truyền trực tiếp textGrob như được hiển thị bên dưới. – baptiste

Trả lời

7

Tạo một textGrob một cách rõ ràng:

grid.arrange(main = textGrob(label = expression(paste(CO[2], "Exp"))), 
      p1, p2, p3, p4, ncol=2) 

Sửa (16/07/2015): với gridExtra > = 2.0.0, thông số main đã được đổi tên thành top. Xem ?arrangeGrob để biết chi tiết.

+1

Aaaa, đánh bại giây của tôi. :) –

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