Ошибка при добавлении основного заголовка с индексом в gridExtra

Я пытаюсь организовать несколько участков, созданных ggplot2с использованием 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)

Когда я пытаюсь получить главный заголовок, следующий работает отлично.

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

Но когда я пытаюсь с expression чтобы получить подписку,

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

Я получаю следующую ошибку

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

Как это исправить?

я использую R_3.1.3, gridExtra_0.9.1 и ggplot2_1.0.1

1 ответ

Решение

Создать textGrob в явном виде:

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

Изменить (16/07/2015): с gridExtra >= 2.0.0 main параметр был переименован top, Увидеть ?arrangeGrob для деталей.

Другие вопросы по тегам