2011-09-27 15 views
10

Spesso mi imbatto in un problema in cui ho un frame di dati che ha una singola variabile x, una o più variabili facet e più variabili diverse. A volte mi piacerebbe tracciare contemporaneamente variabili y diverse come linee separate. Ma è sempre solo un sottoinsieme che voglio. Ho provato a utilizzare la fusione per ottenere "variabile" come colonna e usarla, e funziona se voglio ogni singola colonna che apparteneva al set di dati originale. Di solito non lo faccio.Il modo corretto per tracciare più valori y come linee separate con ggplot2

In questo momento ho fatto davvero le cose per davvero. Supponiamo che con mtcars voglio tracciare DISP, CV, e in peso contro mpg:

ggplot(mtcars, aes(x=mpg)) + 
    geom_line(aes(y=disp, color="disp")) + 
    geom_line(aes(y=hp, color="hp")) + 
    geom_line(aes(y=wt, color="wt")) 

Questo si sente veramente ridondante. Se per prima cosa sciolgo mtcars, allora tutte le variabili si scioglieranno e quindi finirò per tracciare altre variabili che non voglio.

Qualcuno ha un buon modo per farlo?

risposta

8

ggplot preferisce sempre lungo formato dataframe, quindi melt esso:

mtcars.long <- melt(mtcars, id = "mpg", measure = c("disp", "hp", "wt")) 
ggplot(mtcars.long, aes(mpg, value, colour = variable)) + geom_line() 
+0

Così la parte misura è la cosa che mi stava ignorando. Suppongo che questo sia il modo giusto, solo un po 'fastidioso quando stai esplorando in modo interattivo. –

+2

@Chris - in alternativa, fondere l'intero data.frame come suggerito e quindi usare 'subset()' come argomento dati nella chiamata 'ggplot()' se si pianifica di plottare cose diverse e non si desidera re ' melt' – Chase

Problemi correlati