manipulation ggtitle ggplot change r ggplot2

r - ggplot - ggtitle position



Cómo anotar() ggplot con látex (3)

Me gustaría agregar texto de látex a un gráfico de ggplot2 usando annotate() . El uso de expression() , como se describe here para agregar látex a las etiquetas de ejes, no parece funcionar. Esto es:

# 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")

¿Por qué las expression tratan de manera diferente por annotate que por otras funciones de ggplot? ¿Y cómo puedo anotar con látex?


El paquete tikzDevice está de vuelta en CRAN (última versión 0.9 publicada en noviembre de 2015).

El uso de tikz requiere una instalación completa de LaTeX; puede ser más fácil hacerlo a través de knitr dentro de un documento LaTeX (simplemente configure dev="tikz" en las opciones de fragmentos). Sin embargo, también puede usarlo para crear una figura independiente. Irónicamente, la parte más difícil de esta pregunta fue obtener un subíndice de texto, que requiere un paquete LaTeX adicional ( fixltx2e ) para el comando /textsubscript ...

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")


Hay un paquete R llamado latex2exp que puede ser útil. Tiene la función TeX que acepta algunas expresiones LaTeX incluidas con el signo de dólar $ como en este ejemplo:

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

Más ejemplos se pueden encontrar en esta viñeta .


Puedes usar el argumento parse , sin expression :

p + annotate("text", x=10, y=40, label="text[subscript]", parse=TRUE)