2009-10-06 18 views
7

Ho tre serie di dati di lunghezze diverse e vorrei tracciare le funzioni di densità di tutti e tre sullo stesso grafico. Questo è semplice con la grafica di base:Tracciare le funzioni di densità predefinite usando ggplot e 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)) 

che mi dà qualcosa di simile:

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

Ma voglio davvero fare questo con GGPLOT2 perché voglio aggiungere altre caratteristiche che sono solo disponibile con GGPLOT2. Sembra che GGPLOT voglia davvero prendere i miei dati empirici e calcolare la densità per me. E mi dà un po 'di labbra perché i miei set di dati sono di diversa lunghezza. Quindi, come faccio a ottenere queste tre densità per tracciare in GGPLOT2?

+0

Basta chiedersi ... perché capitalizzi sempre ggplot2? –

+0

In realtà non ... è il mio mignolo. Salta laggiù e preme il tasto Maiusc senza il mio permesso. :) Penso che sia un risultato inconscio di digitare un sacco di sigle in maiuscole tutto il giorno. Sono cosciente di lasciarlo in minuscolo. Faccio la stessa cosa con plyr (anche se ho digitato che devo backspace e renderlo in minuscolo). Hadley mi ha già sballato le mie bacchette per mescolare case + underscore nei miei nomi variabili nel mio codice. Voi ragazzi mi renderete più ordinato e facile da leggere se non sto attento! –

risposta

12

Il segreto della felicità in ggplot2 è quello di mettere tutto nel "lungo" (o quello che io immagino matrice orientata chiamerebbero "sparse") Formato:

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") 

Se non si desidera colori:

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

hai reso la mia notte molto meglio. Ero alle prese con questo e non riuscivo a capirlo. Grazie mille. –

Problemi correlati