Domanda

Ho tre insiemi di dati di diversa lunghezza e vorrei tracciare funzioni di densità di tutti e tre sulla stessa trama. Questo è semplice con la grafica di base:

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

Il che mi dà qualcosa di simile:

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

Ma ho davvero voglia di fare questo con GGPLOT2 perché voglio aggiungere altre caratteristiche che sono disponibili solo con GGPLOT2. Sembra che GGPLOT vuole davvero prendere i miei dati empirici e calcolare la densità per me. E mi dà un sacco di labbro perché i miei insiemi di dati sono di diverse lunghezze. Allora, come faccio ad avere questi tre densità di trama in GGPLOT2?

È stato utile?

Soluzione

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 che i colori:

qplot(value, group=x, data=df, geom="density")
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top