2011-09-27 6 views
10

Często napotykam problem, w którym mam ramkę danych, która ma pojedynczą zmienną x, jedną lub więcej zmiennych aspektu i wiele różnych innych zmiennych. Czasami chciałbym jednocześnie wykreślić różne zmienne y jako oddzielne linie. Ale zawsze jest to tylko podzbiór, którego chcę. Próbowałem użyć stopu, aby uzyskać "zmienną" jako kolumnę i użyć tego, i działa, jeśli chcę, aby każda kolumna, która była w oryginalnym zestawie danych. Zwykle nie.Właściwy sposób rysowania wielu wartości y jako oddzielne linie z ggplot2

W tej chwili robię rzeczy naprawdę okrągłe, jak się wydaje. Przypuśćmy, że z mtcars chcę wyposażyć disp, hp i wt przeciwko 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")) 

To naprawdę niepotrzebne. Jeśli najpierw stopię mtcars, wtedy wszystkie zmienne zostaną stopione, a następnie skończę kreśląc inne zmienne, których nie chcę.

Czy ktoś ma dobry sposób robienia tego?

Odpowiedz

8

ggplot zawsze preferuje długiej formatu dataframe, więc melt go:

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

Więc część miarą jest rzeczą, ignorował. Przypuszczam, że jest to właściwa droga, tylko trochę irytująca, gdy odkrywasz interaktywnie. –

+2

@Chris - alternatywnie, rozpakuj cały plik data.frame zgodnie z sugestią, a następnie użyj 'subset()' jako argumentu danych w wywołaniu 'ggplot()', jeśli planujesz drukowanie różnych rzeczy i nie chcesz ponownie. stopić " – Chase

Powiązane problemy