我正在尝试使用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

最佳答案

显式创建一个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

关于r - 在gridExtra中添加带下标的主标题时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29650431/

10-09 17:08