2010-09-01 23 views
20

Estoy tratando de agrupar una variable de mis datos por otra y luego trazar una línea por los medios. Funciona bien cuando ambas variables son números. Sin embargo, tengo un problema cuando la variable de agrupación es un factor. Tengo una maqueta abajo.ggplot2: línea que conecta los medios de datos agrupados

x <- sample(1:3, 40, replace=T) 
y <- rnorm(40) 

df1 <- data.frame(x, y) 
qplot(x, y, data=df1) + stat_summary(fun.y=mean, colour="red", geom="line") 

alt text

Esto es se ve muy bien. Sin embargo, si la variable x es un factor, no obtengo la línea.

df2 <- data.frame(x=as.factor(x), y) 
qplot(x, y, data=df2) + stat_summary(fun.y=mean, colour="red", geom="line") 

alt text

¿Hay algo que pueda hacer para obtener esta línea aparece?

Ps. geom = obras "puntuales", pero no geom = "línea"

qplot(x, y, data=df2) + stat_summary(fun.y=mean, colour="red", geom="point") 

alt text

Gracias por leer !!

Respuesta

24

ggplot2 intencionalmente hace que sea un poco complicado dibujar líneas en los factores del eje x, porque debe asegurarse de que sea significativo. Si su eje x era "Nueva York", "Filadelfia" y "Boston", no sería una buena idea trazar una línea que los conectara.

Sin embargo, suponiendo que su variable x tiene un orden significativo, debe definir la estética group para dibujar la línea que desee. Aquí, group = 1.

qplot(x, y, data=df2) + 
    stat_summary(fun.y=mean, colour="red", geom="line", aes(group = 1)) 

Si acaba de añadir geom_line() a una parcela de esta manera, tendrá que definir la variable de agrupación de una manera similar.

+6

Estas soluciones ya no funcionan. Generan el error: "geom_path: cada grupo consiste en una sola observación. ¿Necesita ajustar la estética del grupo?" –

+4

'ggplot (df2, aes (x = x), y = y)) + stat_summary (fun.y =" mean ", geom =" línea ", aes (group = factor (grouping)))' funcionó para mí –

Cuestiones relacionadas