2011-09-27 17 views
10

A menudo me encuentro con un problema donde tengo un marco de datos que tiene una sola variable x, una o más variables facetarias y muchas otras variables diferentes. A veces me gustaría trazar simultáneamente diferentes variables y como líneas separadas. Pero siempre es solo un subconjunto que quiero. He intentado usar derretimiento para obtener "variable" como columna y usar eso, y funciona si quiero cada columna que estaba en el conjunto de datos original. Usualmente no.La forma correcta de trazar múltiples valores y como líneas separadas con ggplot2

En este momento he estado haciendo cosas realmente indirectas. Supongamos que con mtcars Quiero trazar disp, CV, y peso contra 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")) 

Esto se siente realmente redundante. Si primero fundo mtcars, todas las variables se fundirán, y luego terminaré trazando otras variables que no quiero.

¿Alguien tiene una buena forma de hacerlo?

Respuesta

8

ggplot siempre prefiere largo formato de trama de datos, de modo que melt:

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

Así que la parte medida es la cosa estaba ignorando. Supongo que este es el camino correcto, solo un poco molesto cuando exploras de forma interactiva. –

+2

@Chris - alternativamente, derrita todo el data.frame como sugirió y luego use 'subconjunto()' como el argumento de datos en la llamada 'ggplot()' si planea trazar cosas diferentes y no desea volver a ' Derretir – Chase

Cuestiones relacionadas