2010-09-01 9 views
20

Sto provando a raggruppare una variabile dei miei dati con un'altra e poi a tracciare una linea attraverso i mezzi. Funziona bene quando entrambe le variabili sono numeri. Tuttavia, sto avendo un problema quando la variabile di raggruppamento è un fattore. Ho un mock up qui sotto.ggplot2: linea che collega i mezzi dei dati raggruppati

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

Questo è sembra grande. Tuttavia se la variabile x è un fattore non ottengo la linea.

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

alt text

C'è qualcosa che posso fare per ottenere questa linea visualizzata?

Ps. geom = "punto" opere ma non geom = "linea"

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

alt text

Grazie per la lettura !!

risposta

24

ggplot2 intenzionalmente rende un po 'complicato disegnare linee attraverso i fattori dell'asse x, perché è necessario assicurarsi che sia significativo. Se il tuo asse x fosse "New York", "Philadelphia" e "Boston", non sarebbe una buona idea tracciare una linea che li colleghi.

Tuttavia, supponendo che la variabile x abbia un ordine significativo, è necessario definire l'estetica group per disegnare la linea desiderata. Qui, group = 1.

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

Se si aggiunge solo geom_line() ad una trama come questo, si dovrà definire la variabile di raggruppamento in un modo simile.

+6

Queste soluzioni non funzionano più. Generano l'errore: "geom_path: ogni gruppo consiste in una sola osservazione. Hai bisogno di regolare l'estetica del gruppo?" –

+4

'ggplot (df2, aes (x = x), y = y)) + stat_summary (fun.y =" mean ", geom =" line ", aes (group = factor (grouping)))" ha funzionato per me –

Problemi correlati