17

I have tried the following, but it doesn't work for me:

a <- ggplot()
a <- a + geom_point(aes(x=seq(0,1,0.1), y=seq(0,1,0.1)))
a <- a + annotate("text", x=0.5, y=0.3, label="myplot")
a <- a + annotate("text", x=0.5,y=0.2,label=expression(%+-%))

I have also tried the following as pointed out by How to annotate() ggplot with latex with no luck:

a <- a + annotate("text", x=0.5, y=0.1, label="%+-%", parse=TRUE)

And this doesn't work either:

a <- a + annotate("text", x=0.5, y=0.1, label="\pm", parse=TRUE)
Community
  • 1
  • 1
PopcornKing
  • 1,370
  • 3
  • 18
  • 23

2 Answers2

31

It is possible to use the unicode representation (\u00B1):

a <- ggplot()
a <- a + geom_point(aes(x=seq(0,1,0.1), y=seq(0,1,0.1)))
a <- a + annotate("text", x=0.5, y=0.3, label="myplot")
a + annotate("text", x=0.5, y=0.2, label="\u00B1")

Or you can use the ± symbol directly, by copying and pasting it from somewhere.

a + annotate("text", x=0.5, y=0.2, label="±")
Jota
  • 17,281
  • 7
  • 63
  • 93
11

This works:

a0 <- ggplot()
a0 <- a0 + geom_point(aes(x=seq(0,1,0.1), y=seq(0,1,0.1)))
a0 + annotate("text", x=0.5, y=0.1, label="'' %+-% '' ", parse=TRUE)

The key idea is that %+-% is an operator, so it has to operate on something, i.e. it has to be in the form x %+-% y; in this case I've made x and y be blank strings.

You could also use phantom():

annotate("text", x=0.5, y=0.1, label = "phantom() %+-% phantom()", parse = TRUE)

If you want to use full LaTeX-style markup like \pm you need to go down the rabbit hole of tikzDevice. However, latex2exp::TeX can often provide a useful hint, e.g.:

latex2exp::TeX("\\pm")
##    LaTeX: \pm 
## plotmath: phantom() %+-% phantom() 
Ben Bolker
  • 211,554
  • 25
  • 370
  • 453