7
votes

Parcelles de densité chevauchées dans ggplot2

Imaginez que j'ai deux vecteurs chacune de la longueur différente. Je veux générer un graphique avec la densité des deux vecteurs superposés. Ce que je pensais devoir faire, c'est ceci: xxx

alors je pensais que je devrais faire cela: xxx non plus de ces travaux, car Les couleurs sont mélangées.

Basé sur une autre solution que j'ai trouvée dans Stackoverflow 1 2 , j'ai réalisé que je devrais Essayez ceci: xxx

OK, j'ai résolu mon problème d'origine. Mais y a-t-il un moyen de faire quelque chose de ressemblant au premier que j'ai essayé ci-dessus? De la façon dont les choses sont libellées dans la documentation ggplot , je l'aurais pensé. Appréciez toute suggestion.


5 commentaires

Vous pouvez probablement ajouter échelle_colour_manual (valeurs = C ('bleu', 'rouge')) à votre première tentative, mais votre dernière tentative est probablement la voie la plus acceptée.


Hmmm et non. cela ne fonctionne pas non plus.


Vous devrez être plus précis, car cela fonctionne très bien pour moi.


Utilisation: GGPLOT () + Geom_density (AES (x = x, couleur = "rouge"), données = Vec1) + geom_density (AES (x = x, couleur = "bleu"), données = Vec2) + échelle_colour_manual (valeurs = C ('rouge', 'bleu')) Oui, cela change les couleurs. Mais cela attribue la mauvaise couleur à la mauvaise distribution. Au moins pour moi, le 0 dist Centré. est bleu, et le plus large dist. W Moyenne de 1 est rouge, quand je demande le contraire.


Euh ... alors activez-les dans les deux geom_density les appels pour les inverser? Je me rends compte que c'est à l'envers et à tout, mais votre première tentative n'est tout simplement pas la manière dont la logique des légendes fonctionne dans GGPLOT. Vous n'édorciez pas d'étiquettes de couleur aux choses de la Geom. C'est juste pas comment c'est fait.


3 Réponses :


19
votes

Tout fonctionnera bien si vous déplacez l'affectation du paramètre code> couleur code> de AES () code>.

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

library(ggplot2)

ggplot() + geom_density(aes(x=x), colour="red", data=vec1) + 
  geom_density(aes(x=x), colour="blue", data=vec2)


1 commentaires

Et c'était la «petite» truc de twiggly qui me trompait. Tous les exemples que j'ai trouvés ont montré couleur dans aes () . Merci, cela peut être utile lorsque j'ai vraiment gros vecteurs gros Je ne veux pas vraiment concaténer dans un seul cadre de données.



0
votes

J'ai eu des problèmes avec la solution ci-dessus, car mes données étaient contenues dans un seul cadre de données. Utilisation de ... data = df $ A dans l'esthétique ne fonctionne pas car cela fournira ggplot avec un vecteur de classe "numérique", qui n'est pas pris en charge.

là-bas, pour superposer différentes colonnes contenues dans la même trame de données, je suggérerais: xxx

 Entrez la description de l'image ici

Pour la plupart des gens, cela pourrait sembler évident, mais pour moi comme débutant, ce n'était pas le cas. J'espère que cela aide.


0 commentaires

3
votes

Essayez ceci si vous voulez avoir des légendes aussi: xxx

Entrez la description de l'image ici


0 commentaires