tutorial - superponer graficas en r ggplot
Trazar líneas y la estética grupal en ggplot2 (1)
Esta pregunta se deriva de una pregunta anterior y sus respuestas.
Primero algunos datos de juguetes:
df = read.table(text =
"School Year Value
A 1998 5
B 1999 10
C 2000 15
A 2000 7
B 2001 15
C 2002 20", sep = "", header = TRUE)
La pregunta original preguntó cómo trazar líneas de Valor-Año para cada escuela. Las respuestas más o menos corresponden a p1 y p2 a continuación. Pero también considere p3.
library(ggplot2)
(p1 <- ggplot(data = df, aes(x = Year, y = Value, colour = School)) +
geom_line() + geom_point())
(p2 <- ggplot(data = df, aes(x = factor(Year), y = Value, colour = School)) +
geom_line(aes(group = School)) + geom_point())
(p3 <- ggplot(data = df, aes(x = factor(Year), y = Value, colour = School)) +
geom_line() + geom_point())
Tanto p1 como p2 hacen el trabajo. La diferencia entre p1 y p2 es que p1 trata el Year
como numérico, mientras que p2 trata el Year
como un factor. Además, p2 contiene una estética group
en geom_line
. Pero cuando se group
estética del group
como en p3, las líneas no se dibujan.
La pregunta es: ¿por qué es necesaria la estética del group
cuando la variable del eje x es un factor, pero la estética del group
no es necesaria cuando la variable del eje x es numérica?
En las palabras del propio Hadley :
Lo importante [ para un gráfico de líneas con un factor en el eje horizontal ] es especificar manualmente la agrupación. Por defecto, ggplot2 usa la combinación de todas las variables categóricas en el gráfico para agrupar los geoms; eso no funciona para este diagrama porque se obtiene una línea individual para cada punto. Especificar manualmente group = 1 indica que desea una sola línea que conecte todos los puntos.
En realidad, puedes agrupar los puntos de maneras muy diferentes, como lo demuestra koshke aquí