2009-10-06 4 views
7

J'ai trois ensembles de données de longueurs différentes et je voudrais tracer les fonctions de densité des trois sur le même tracé. C'est simple avec des graphismes de base:Tracé des fonctions de densité prédéfinies à l'aide de ggplot et 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)) 

Ce qui me donne quelque chose comme ceci:

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

Mais je veux vraiment le faire avec ggplot2 parce que je veux ajouter d'autres fonctionnalités qui ne sont disponible avec GGPLOT2. Il semble que GGPLOT veut vraiment prendre mes données empiriques et calculer la densité pour moi. Et cela me donne un tas de lèvre parce que mes ensembles de données sont de différentes longueurs. Alors, comment puis-je obtenir ces trois densités à tracer dans GGPLOT2?

+0

Je me demandais juste ... pourquoi capitaliser toujours ggplot2? –

+0

En fait, je ne ... c'est mon petit doigt. Il saute juste là-bas et appuie sur la touche MAJ sans ma permission. :) Je pense que c'est un résultat inconscient de taper beaucoup d'acronymes en majuscules toute la journée. Je fais un effort conscient pour le laisser en minuscules. Je fais la même chose avec plyr (même si j'ai tapé que je dois reculer et faire les minuscules). Hadley a déjà cassé mes côtelettes pour le mélange de cas + underscore dans mes noms de variables dans mon code. Vous allez me rendre plus ordonné et plus facile à lire si je ne fais pas attention! –

Répondre

12

Le secret du bonheur dans ggplot2 est de tout mettre dans le « long » (ou ce que je suppose que les gens orientés matrice appellent « clairsemée ») 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") 

Si vous ne voulez pas les couleurs:

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

vous avez fait ma nuit tellement mieux. Je me débattais avec ça et je n'arrivais pas à le comprendre. Merci beaucoup. –

Questions connexes