涉及希腊符号的 Facet 标签

7
假设我有以下数据和图表:

代码如下:

mydata = data.frame(x=rnorm(4), y=runif(4), tau=c(0,0,1,1))
ggplot(mydata) + geom_point(aes(x=x, y=y)) + facet_wrap(~ tau)

我希望将facet标签分别更改为“tau = 0”和“tau = 1”,其中tau的格式应为其希腊符号。我从另一个问题中得知,使用labeller label_parsed将只会格式化tau字母本身,但等号似乎会使事情复杂化。理想的解决方案不需要我更改数据(即使tau成为一个因子并命名其级别),但我会尝试任何可行的方法:)
2个回答

12

使用facet_grid并通过其级别对tau进行索引,这里提供了一个解决方案。

mydata = data.frame(x=rnorm(4), y=runif(4), tau=c(0,0,1,1))
ggplot(mydata) + geom_point(aes(x=x, y=y)) +
         facet_grid(~ tau,labeller = label_bquote(tau ^ .(x)))

enter image description here

编辑 获取“tau=0”和“tau=1”

facet_grid(~ tau,labeller = label_bquote(tau == .(x)))

编辑2 第二个变量sigma

我找到了一种解决方案,通过定义一个自定义的标签器。希望有人(ggplot2的开发者)能提供一个更简单的解决方案。

enter image description here

my.label_bquote <- function (expr1 = (tau == .(x)),expr2 = (sigma == .(x))) 
{
   quoted1<- substitute(expr1)
   quoted2 <- substitute(expr2)
   function(variable, value) {
      value <- as.character(value)
      if(variable == 'tau')
         lapply(value, function(x)
               eval(substitute(bquote(expr1, list(x = x)),list(expr1 = quoted1))))
      else
         lapply(value, function(x) 
               eval(substitute(bquote(expr2, list(x = x)),list(expr2 = quoted2))))
   }
}

mydata = data.frame(x=rnorm(4), y=runif(4), tau=c(0,0,1,1),sigma=c(2,2,3,3))
ggplot(mydata) + geom_point(aes(x=x, y=y)) +
  facet_grid(sigma ~ tau,labeller = my.label_bquote())

不错!这个方法能否扩展到二维呢?例如,如果我有第二个变量sigma想要使用facet_grid进行分面。 - mitchus
1
第二个变量“solution”非常“单次使用”,但在进行少量修改后对我有用。特别是,我删除了对 expr1expr2 值周围的括号,并注释掉了 browser() 调用。同样,variable == 'tau' 必须根据我的应用程序进行更改。 - Zoë Clark
@ZoëClark 谢谢您的反馈。我已经移除了浏览器声明。 - agstudy

3
这个问题有一个更简单的解决方案。为了在“labeller”参数中清晰地说明它们的工作原理,模拟数据变量名称已经被更改过了。
mydata = data.frame(x=rnorm(4), y=runif(4), tauvar=c(0,0,1,1),sigmavar=c(2,2,3,3))

ggplot(mydata) + 
   geom_point(aes(x=x, y=y)) +
   facet_grid(sigmavar ~ tauvar,labeller = label_bquote(sigma==.(sigmavar),
                                                   tau==.(tauvar)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接