6

In

library(ggplot2)
library(reshape)
df <- as.data.frame(matrix(runif(9),3,3))
df$factor <- letters[1:3]
df.m <- melt(df)
ggplot(df.m, aes(variable, value)) +
  geom_boxplot() +
  facet_wrap(~factor)

i want to change the facet names. According to the ggplot2 tutorials, this is working:

new.lab <- as_labeller(c(a="A",b="B",c="C"))
ggplot(df.m, aes(variable, value)) +
  geom_boxplot() +
  facet_wrap(~factor, labeller=new.lab)

However, this is not:

new.lab <- as_labeller(c(a="A",b="B",c=expression(italic("C"))))
ggplot(df.m, aes(variable, value)) +
  geom_boxplot() +
  facet_wrap(~factor, labeller=new.lab)   

How can i get italics (or any other special symbol) in ggplot2 2.0 facets?

nouse
  • 3,315
  • 2
  • 29
  • 56

2 Answers2

12

How about label_parsed instead?

df.m$f2 <- factor(df.m$factor, labels = c("AAA", "bold(BBB)", "italic(CCC)"))
ggplot(df.m, aes(variable, value)) + 
  geom_boxplot() + 
  facet_wrap(~f2, labeller = label_parsed) + 
  theme(text = element_text(size = 20))

enter image description here

tonytonov
  • 25,060
  • 16
  • 82
  • 98
10

You can specify the type of labeller here using label_parsed,

new.lab <- as_labeller(c(a="A", b="B", c="italic(C)"), label_parsed)
ggplot(df.m, aes(variable, value)) +
  geom_boxplot() +
  facet_wrap(~factor, labeller = new.lab)
Rorschach
  • 31,301
  • 5
  • 78
  • 129
  • 1
    This doesnt seem to work with spaces: Error in parse(text = as.character(values)) : :1:6: unexpected symbol 1: Soil Moisture – nouse Feb 20 '16 at 16:40
  • Thx. i got thinks like Clay="Clay~('%')" and MicrobialN="paste(N[mic])" to work out, but how about this: R.minor="italic(Rhinantus~minor)", which is ignored. Rhinantus Minor should appear in italics and separated by a space – nouse Feb 20 '16 at 16:54