Question: I'd like to add latex text to a ggplot2 plot using `annotate()`. Using `expression()`, as described [here](https://stackoverflow.com/questions/1395105/getting-latex-into-r-plots) for adding latex to axis labels, does not seem to work. To wit:

```
# Use expression() to create subscripted text
p <- ggplot(mpg, aes(x=cty, y=hwy)) + geom_point() +
  scale_x_continuous(expression(text[subscript])) 

# But expression() in annotate adds nothing to the plot
p + annotate("text", x=10, y=40, label=expression(text[subscript])) 

# Passing regular text to annotate works fine
p + annotate("text", x=10, y=40, label="foo") 

```

Why are `expression`s treated differently by `annotate` than by other ggplot functions? And how can I annotate with latex?

Answer: 
There is an `R` package called `latex2exp` which may be helpful. It has function `TeX` which accepts some LaTeX expressions enclosed with dollar sign `$` as in this example:

```
library(latex2exp)
library(ggplot2)

qplot(1, "A")+
     ylab(TeX("Formula: $\\frac{2hc^2}{\\lambda^\\beta}$"))+
     xlab(TeX("$\\alpha$"))

```

[![Example](https://i.stack.imgur.com/WNhJj.png)](https://i.stack.imgur.com/WNhJj.png)

More examples can be found in [this vignette](https://cran.r-project.org/web/packages/latex2exp/vignettes/using-latex2exp.html).
The [tikzDevice](https://cran.r-project.org/web/packages/tikzDevice/) package is back on CRAN (latest version 0.9 published Nov 2015).

Using `tikz` does require a full LaTeX installation; it may be easiest to do via `knitr` within a LaTeX document (just set `dev="tikz"` in the chunk options). However, you can use it to create a standalone figure as well. Ironically, the hardest part of this question was getting a text subscript, which requires an additional LaTeX package (`fixltx2e`) for the `\textsubscript` command ...

```
library(tikzDevice)
## add a package to the defaults
options(tikzLatexPackages=
            c(getOption("tikzLatexPackages"),"\\usepackage{fixltx2e}"))
tikz("tikz.tex",standAlone=TRUE)
library("ggplot2"); theme_set(theme_bw())
p <- ggplot(mpg, aes(x=cty, y=hwy)) + geom_point() +
  scale_x_continuous(name="text\\textsubscript{subscript}")
p + annotate("text", x=10, y=40, label="text\\textsubscript{subscript}")
dev.off()

system("pdflatex tikz.tex")

```

[![enter image description here](https://i.stack.imgur.com/7rqD1.png)](https://i.stack.imgur.com/7rqD1.png)