I'd like to add latex text to a ggplot2 plot using annotate()
. Using expression()
, as described here 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?
You can use the
parse
argument, withoutexpression
:There is an
R
package calledlatex2exp
which may be helpful. It has functionTeX
which accepts some LaTeX expressions enclosed with dollar sign$
as in this example:More examples can be found in this vignette.
The 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 viaknitr
within a LaTeX document (just setdev="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 ...