name labs ggtitle ggplot color change r graphics ggplot2 knitr tikz

labs - ¿La escala de color continua de ggplot2 es incompatible con el dispositivo tikz de knitr?



r ggplot change legend labels (2)

He estado usando knitr con gráficos base R y salida tikz por un tiempo, y quería probar ggplot2 en ggplot2 lugar. Sin embargo, este ejemplo mínimo no produce ningún resultado con knitr 1.0.5:

/documentclass{article} /begin{document} <<dev = ''tikz''>>= library(ggplot2) d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9)) ggplot(d, aes(a, b, color = c)) + geom_point() @ /end{document}

En cambio, falla con el mensaje Error in UseMethod("depth"): no applicable method for ''depth'' applied to an object of class "NULL" . Ejecutar el código en R o elegir el dispositivo png dará como resultado el gráfico esperado. Omitir la estética del color o factorizar c funciona con tikzDevice, por lo que la escala de color continua parece ser el problema.

¿Hay algo que estoy haciendo mal, o es un error?


Puedo hacer que tikzDevice trabaje con tu código agregando dev.off() al final del bloque de código. Por ejemplo:

cat(" //documentclass{article} //begin{document} <<dev = ''tikz''>>= library(ggplot2) d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9)) ggplot(d, aes(a, b, color = c)) + geom_point() dev.off() @ //end{document} ", "test_works.Rtex") knit("test_works.Rtex")

funciona bien.

También he notado que si llamo a knit() través de una sesión R activa en el código (original), me queda un dispositivo tikz activo ...

cat(" //documentclass{article} //begin{document} <<dev = ''tikz''>>= library(ggplot2) d = data.frame(a = c(1, 2, 3), b = c(4, 5, 6), c = c(7, 8, 9)) ggplot(d, aes(a, b, color = c)) + geom_point() @ //end{document} ", file = "test_fails.Rtex") knit("test_fails.Rtex") dev.list()


Esto fue un error , ahora resuelto en la versión de desarrollo 0.10 de tikzDevice , que llegará pronto a CRAN. Hasta entonces, instale usando

devtools::install_github("yihui/tikzDevice")