我有一个数据集,想要绘制小型多面图,具体来说是一个 2x2 的矩阵,就像这样:
mydf <- data.frame(letter = factor(rep(c("A", "B", "C", "D"), each = 20)), x = rnorm(80), y = rnorm(80))
ggplot(mydf, aes(x = x, y = y)) + geom_smooth(method = "lm") + geom_point() + facet_wrap(~ letter, ncol = 2)
然而,我希望每个方面标签都包含一个表达式,例如
expression(paste("A or ", alpha))
我可以使用facet_grid()
实现这一点
f_names <- list('A' = expression(paste("A or ", alpha)), 'B' = expression(paste("B or ", beta)), 'C' = expression(paste("C or ", gamma)), 'D' = expression(paste("D or ", delta)))
f_labeller <- function(variable, value){return(f_names[value])}
ggplot(mydf, aes(x = x, y = y)) + geom_smooth(method = "lm") + geom_point() + facet_grid(~ letter, labeller = f_labeller)
但是我失去了2x2的数组。我如何使用表达式重命名facet_wrap()
的 facet 标签?或者,我如何通过使用facet_grid()
重新创建2x2的数组,但只对单个变量进行分面处理来解决这个问题?
(这个问题基于 @baptiste 对此前问题中的括号注释。)
谢谢!
facet_wrap_labeller()
函数非常好用。@Ricardo:感谢你提供的链接--我已经找到了那个答案,并且它让我最初想到了这个问题。谢谢你们两个。 - RTM