Superposé de la densité des parcelles dans ggplot2

Imaginer j'ai deux vecteurs de longueur. Je veux générer une parcelle de terrain avec la densité de vecteurs superposées. Ce que j'ai pensé que je devrais faire c'est ceci:

vec1 <- data.frame(x=rnorm(2000, 0, 1))
vec2 <- data.frame(x=rnorm(3000, 1, 1.5))
ggplot() + geom_density(aes(x=x, colour="red"), data=vec1) + 
  geom_density(aes(x=x, colour="blue"), data=vec2)

Puis j'ai pensé que je devrais faire ceci:

vec1 <- data.frame(x=rnorm(2000, 0, 1))
vec2 <- data.frame(y=rnorm(3000, 1, 1.5))
ggplot() + geom_density(aes(x=x, colour="red"), data=vec1) + 
  geom_density(aes(x=y, colour="blue"), data=vec2)

Ni l'un ni tout à fait, parce que les couleurs se mélangent.

Basée sur une autre solution que j'ai trouvé dans StackOverflow Un Deux, j'ai réalisé que je devrais essayer ceci:

vec1 <- data.frame(x=rnorm(2000, 0, 1), grp="vec1")
vec2 <- data.frame(x=rnorm(3000, 1, 1.5), grp="vec2")
allDat <- rbind(vec1, vec2)

ggplot(allDat, aes(x, colour=grp)) + geom_density()

ggplot(allDat, aes(x, colour=grp)) + geom_density() + 
  scale_colour_manual(values=c("green", "blue"))

ggplot(allDat, aes(x, colour=grp)) + geom_density() + 
  scale_colour_manual(values=c(vec2="green", vec1="blue"))

OK, j'ai résolu mon problème d'origine. Mais est-il un moyen de faire quelque chose de semblable à la première que j'ai essayé ci-dessus? De la façon dont les choses sont formulées dans le ggplot de la documentation, j'aurais pensé ainsi. Apprécier toutes les suggestions.

  • Vous pourriez probablement ajouter scale_colour_manual(values = c('blue','red')) à votre première tentative, mais votre dernière tentative est probablement la plus acceptée de l'itinéraire.
  • Hmmm, et ben non. cela ne fonctionne pas non plus.
  • Vous devrez être plus précis, car il fonctionne très bien pour moi.
  • Aide: ggplot() + geom_density(aes(x=x, couleur="rouge"), data=vec1) + geom_density(aes(x=x, couleur="bleu"), data=vec2) + scale_colour_manual(valeurs=c ("red", "blue")) Oui, les changements de couleurs. Mais, il attribue la mauvaise couleur de la mauvaise distribution. Au moins pour moi, l'0 centrée dist. est bleu, et l'ensemble de la dist. w moyenne de 1 est rouge, quand je demande le contraire.
  • Euh...donc, passer dans les deux geom_density appels à l'inverse de leur retour? Je me rends compte que c'est en arrière et tout et tout, mais votre première tentative n'est tout simplement pas comment la logique de légendes travaille dans ggplot. Vous n'avez pas affecter des étiquettes de couleur, de choses dans la geom. C'est juste pas comment c'est fait.
InformationsquelleAutor rmflight | 2012-08-30