6

我需要使用 ggplot2 中的 facet_wrap() 将希腊字母放入构面标签中。我找到了一个对 facet_grid() 进行相同描述的链接。我使用以下代码将其应用于我的数据:

levels(parameters) <- c(expression(alpha), expression(beta))  
p + facet_grid(.~parameters, labeller = label_parsed)

这很好用,完全符合我的要求。但是,我需要使用 facet_wrap() 代替(为两个参数获取单独的 y 轴,并在不同的列和行中绘制更多参数)。我尝试了以下方法:

p + facet_wrap(.~parameters, labeller = label_parsed)  ,  or  
p + facet_wrap(.~parameters)

但这不起作用,因为 facet_wrap 中没有“labeller”功能。这怎么能用网格来完成?

4

1 回答 1

9

这个例子应该让你开始:

library("ggplot2")
library("grid")

d <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
            geom_point() +
            facet_wrap(~Species)
grob <- ggplotGrob(d)
strip_elem <- grid.ls(getGrob(grob, "strip.text.x", grep=TRUE, global=TRUE))$name

grob <- grid::editGrob(grob, strip_elem[1], label=expression(alpha[1]))
grob <- grid::editGrob(grob, strip_elem[2], label=expression(beta^2))
grob <- grid::editGrob(grob, strip_elem[3], label=expression(hat(gamma)))

grid.draw(grob)

修改过的 grob

更新:这适用于ggplot2版本 0.9.3(尽管使用是修改图形grid的一种脆弱方式)ggplot2

grob[["grobs"]][["strip_t.1"]][["children"]][[2]][["label"]] <- expression(alpha[1])
grob[["grobs"]][["strip_t.2"]][["children"]][[2]][["label"]] <- expression(beta^2)
grob[["grobs"]][["strip_t.3"]][["children"]][[2]][["label"]] <- expression(hat(gamma))
grid.draw(grob)
于 2011-06-30T19:18:31.620 回答