2015-04-15 13 views
6

'da altyazı ile ana başlık eklenirken hatagridExtra paketini kullanarak oluşturmaya çalışıyorum.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) 

Ana başlığa sahip olmaya çalıştığımda, follwing düzgün çalışıyor.

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

Ama

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

bir simge olsun expression ile çalıştığımda aşağıdaki hata

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

Bu nasıl düzeltmek için olsun? Ben R _3.1.3 kullanıyorum

, gridExtra _0.9.1 ve _1.0.1

+1

grid.arrange, textBrob'a iletilen "is.character" için kaba bir test yapar, ancak ifadeler testi geçmez. Çözüm, aşağıda gösterildiği gibi bir textGrob iletmektir. – baptiste

cevap

7

ggplot2 bir textGrob açıkça oluşturun:

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

Düzenleme (16/07/2015): gridExtra ile > = 2.0.0, main parametresi top olarak yeniden adlandırıldı. Ayrıntılar için bkz. ?arrangeGrob.

+1

Aaaa, saniyelerle yendi. :) –