2009-10-06 5 views
7

Mam trzy zestawy danych o różnych długościach i chciałbym wykreślić funkcje gęstości wszystkich trzech na tym samym wykresie. To proste z grafiką podstawowych:Wykreślanie predefiniowanych funkcji gęstości za pomocą ggplot i R

n <- c(rnorm(10000), rnorm(10000)) 
a <- c(rnorm(10001), rnorm(10001, 0, 2)) 
p <- c(rnorm(10002), rnorm(10002, 2, .5)) 

plot(density(n)) 
lines(density(a)) 
lines(density(p)) 

Który daje mi coś takiego:

alt text http://www.cerebralmastication.com/wp-content/uploads/2009/10/density.png

Ale naprawdę chcę to zrobić z GGPLOT2 bo chcę dodać inne funkcje, które są tylko dostępne z GGPLOT2. Wygląda na to, że GGPLOT naprawdę chce wziąć moje dane empiryczne i obliczyć dla mnie gęstość. I to daje mi sporo warg, ponieważ moje zbiory danych mają różną długość. Jak więc uzyskać te trzy gęstości do wykreślenia w GGPLOT2?

+0

Zastanawiasz się tylko ... dlaczego zawsze używasz ggplot2? –

+0

Właściwie to nie ... to mój mały palec. Po prostu skacze tam i naciska klawisz shift bez mojej zgody. :) Myślę, że jest to nieświadomy skutek wpisywania wielu akronimów w kapsle przez cały dzień. Podejmuję świadomy wysiłek, aby zostawić go małymi literami. Robię to samo z plyr (nawet gdy pisałem, że muszę cofnąć i zrobić małą literę). Hadley wyrzucił już moje kotlety za mieszanie wielkości liter i podkreśleń w moich nazwach zmiennych w moim kodzie. Jeśli nie będę ostrożny, sprawisz, że będę bardziej uporządkowany i łatwiejszy do odczytania! –

Odpowiedz

12

Sekret szczęścia w ggplot2 jest umieszczenie wszystkiego w „długi” (lub co myślę, osoby zorientowane matrix nazwałbym „rzadki”) Format:

df <- rbind(data.frame(x="n",value=n), 
      data.frame(x="a",value=a), 
      data.frame(x="p",value=p)) 
qplot(value, colour=x, data=df, geom="density") 

Jeśli nie chcesz kolory:

qplot(value, group=x, data=df, geom="density") 
+0

Sprawiłeś, że moja noc była o wiele lepsza. Walczyłem z tym i nie mogłem tego rozgryźć. Dziękuję bardzo. –