R: re-label facet_wrap 标题中含有等号的字符串

R: re-label facet_wrap title with a character string that contains an equal sign

library(ggplot2)
library(tidyverse)
data <- as.data.frame(matrix(rnorm(60),20,3)) 
data$factor <- c(rep("f1", 4),rep("f2", 4), rep("f3", 4), rep("f4",4),rep("f5", 4))
names(data) <- c("A", "B", "C", "factor")
melted <- melt(data)
melted$factor <- factor(melted$factor, 
                        levels=paste0('f', 1:5),
                        labels=c('beta[sigma]^2=1', 'beta[sigma]^2=2', 'beta[sigma]^2=3', 'beta[sigma]^2=4', 'beta[sigma]^2=5'))

p <- ggplot(melted, aes(variable, value)) +
  stat_boxplot(geom ='errorbar') + 
  geom_boxplot()
p + facet_wrap(~factor, labeller=label_parsed)

是否有不同的方法来指定情节标题中的等号,使其周围没有括号?

一个选项是跳过 factor/labels 方法并使用 label_bquote

格式化 factor
library(ggplot2)
library(dplyr)
melted %>% 
  mutate(new = readr::parse_number(factor)) %>%
  ggplot(aes(variable, value)) + 
   stat_boxplot(geom = 'errorbar') +
   geom_boxplot() + 
   facet_wrap(~ new, labeller = label_bquote(beta[sigma]^2==.(new)))

-输出


如果我们想将 OP 的选项与 label_parsed 一起使用,请将 labels

中的 = 更改为 ==
melted$factor <- factor(melted$factor, 
                         levels=paste0('f', 1:5),
                         labels=c('beta[sigma]^2==1', 
                                'beta[sigma]^2==2', 
                                'beta[sigma]^2==3', 
                                'beta[sigma]^2==4', 
                      'beta[sigma]^2==5'))

现在,应该可以了

p <- ggplot(melted, aes(variable, value)) +
  stat_boxplot(geom ='errorbar') + 
   geom_boxplot()
 p +
      facet_wrap(~factor, labeller=label_parsed)

-输出