superponer - varias graficas en r ggplot
¿Cómo puedo combinar múltiples elementos de ggplot2 en el retorno de una función? (1)
ggplot2 es compatible con la "lista" de los elementos:
myFunction <- function()
list(geom_vline(xintercept = 20),
geom_point(data = mtcars))
p <- ggplot(aes(x = mpg, y = hp), data = mtcars)
p + myFunction()
puede mantener en una lista cualquier pieza que devuelva la función ggplot2, incluidos labs (), opts (), etc., y luego use "+" para bind ggplot2 capa base y la pieza en la lista.
Probablemente esta característica no sea ampliamente conocida, pero es muy útil cuando alguien quiere reutilizar un elemento.
Si trato de componer manualmente algunos elementos de un diagrama de ggplot2
, funciona bien:
> p <- ggplot(aes(x = mpg, y = hp), data = mtcars)
> p + geom_vline(xintercept = 20) + geom_point(data = mtcars)
Pero si intento agrupar parte de la composición en una función, aparece un error:
> myFunction <- function() {
+ return(
+ geom_vline(xintercept = 20) + geom_point(data = mtcars)
+ )
+ }
> p <- ggplot(aes(x = mpg, y = hp), data = mtcars)
> p + myFunction()
Error in geom_vline(xintercept = 20) + geom_point(data = mtcars) :
non-numeric argument to binary operator
¿Me falta algo en la notación ggplot2
para combinar elementos ggplot2
correctamente dentro de un cuerpo de función?