Supposons que j'ai les cadres de données suivants: Je veux tracer ceux-ci comme des lignes dans le même tracé / panneau. Je peux le faire par p> tout ce sera noir. Si je les veux dans une couleur différente, je peux spécifier la couleur explicitement comme un argument à merci. p> p> geom_line () code>. Ma question est de savoir ma question puis-je spécifier une liste de quelques couleurs, disons 5 couleurs, telles que rouges, bleues, vert, orange, gris et utiliser cette liste afin que je n'ai pas à spécifier explicitement les couleurs comme argument de Geom_line () dans le cas de chaque ligne. Si l'intrigue
p code> contient 2 déclarations geom_line (), il les colorera respectivement rouge et bleu. S'il contient 3 déclarations Geom_Line, il les colorera rouge, bleu et vert. Enfin, comment puis-je spécifier la légende pour ces parcelles. Même si je peux donner les couleurs comme un vecteur à la fin de
p code> ce serait génial. S'il vous plaît laissez-moi savoir si la question n'est pas claire. P>
3 Réponses :
Ces types de questions deviennent beaucoup plus faciles à résoudre si vous ajustez votre pensée à la manière dont Donc, votre tentative de construction de ce graphique par pièce, une ligne à la fois provenant de différentes cadres de données et alors em > Attribuer des couleurs à eux est très un- Comment puis-je coder cette information d'étiquetage de couleur sous forme de variable em>? p>
BlockQuote> Dans ce cas, la solution est assez simple. Simplement puis mappe em> la variable em> Enfin, si vous n'aimez pas les couleurs par défaut, vous pouvez spécifier votre propre utilisation de ggplot2 code> approche des graphiques.
GGPLOT2 CODE> est organisé autour de l'idée que tout ce qui apparaît dans votre graphique devrait (en principe) exister comme une colonne de votre cadre de données. (Il existe des exceptions, bien sûr, mais c'est l'idée générale.)
ggplot2 code> ish. Si vous souhaitez étiqueter les choses dans votre graphique avec différentes couleurs, votre première pensée devrait toujours être: P>
rbind code> vos trois cadres de données ensemble (vous devez vous assurer que les colnames correspondent d'abord) et créer une nouvelle colonne, disons
GRP code> qui a trois niveaux correspondant à votre Trois cadres de données: p>
GRP code> au Esthétique em> couleur dans l'appel GGPLOT: p>
échelle_colour_manual : P>
df1 = data.frame(c1 = c(1:5), c2 = c(1:5))
df2 = data.frame(c1 = c(1:5), c2 = (c(1:5))^0.5)
df3 = data.frame(c1 = c(1:5), c2 = (c(1:5))^2)
dat <- rbind(df1,df2,df3)
dat$grp <- rep(factor(1:3),times=c(nrow(df1),nrow(df2),nrow(df3)))
ggplot(data = dat, aes(x = c1, y = c2, colour = grp)) +
geom_line()
GGPLOT2 fonctionne mieux si vous travaillez avec une donnée fondue.frame contenant une colonne différente pour spécifier les différentes esthétiques. La fonte est plus facile avec les noms de colonne courants, alors je commencerais là. Voici les étapes que je prends:
' p> édité pour la clarté forte> p> la structure de et la parcelle elle-même: p> p> p> NEWDATA code >:: p>
@Chasser. Merci! Cependant, l'exemple que vous avez donné des parcelles une seule ligne, pas trois lignes différentes. Je suppose que je peux m'occuper de cela en ajoutant groupe = l1 code> comme argument sur
AES () code>. Le problème avec c'est la légende. Pouvez-vous s'il vous plaît essayez? La légende n'a pas de sens. La légende a plus de trois clés dedans.
@Curious - Quelle est la structure de vos données réelles? Exécution du code ci-dessus donne trois lignes avec une légende qui fait du sens intuitif pour moi ... je vais mettre à jour ma réponse avec le STR de Newdata CODE> et donner la parcelle que je vois. Je ne sais pas pourquoi vous obtiendriez autre chose que si vos données ne sont pas représentatives de vos exemples de données. Vous pouvez forcer la L1 comme un facteur si nécessaire, cependant que cela ne devrait pas être un problème.
@Chasser. Merci pour la clarification. Pour une raison quelconque, la variable L1 dans mon cas est un int code> (1 1 1 1 1 2 2 2 2 etc.) et non
chr code>. Si je corrige ça, ça marche. Maintenant, je dois savoir comment changer le titre et les noms de la légende. Merci de votre aide.
@Curious - Je peux dupliquer ces résultats si je ne donne pas les noms d'objets de liste dans l'appel à Melt () Code>. J'ai donné à chaque data.frame un nom ...
df1 = df1 code>, vous pouvez les nommer tout ce que vous voulez ...
foo = df1, bar = df2, baz = df3 code> . Si vous ne les nommez pas, ils viennent d'attribuer des valeurs entières. Le titre de légende peut être modifié avec
échelle_colour_manual (nom = "Yahtzee", ...) code>. Je définirais les noms sur ce que vous voulez lorsque vous faites fondre les données.
Merci beaucoup de clarifier cela. Maintenant je comprends ça. Une question rapide: je peux également définir le titre de légende (au moins dans ce cas) par échelle_color_hue () code> au lieu de
échelle_color_manual () code>. Est-ce que l'un est meilleur que l'autre? Encore une fois, merci beaucoup.
@Chase - Je voulais juste vous faire savoir que échelle_color_manual code> n'a pas fonctionné? J'ai dû utiliser
échelle_color_hue code>. Merci quand même pour l'explication sur la définition des noms d'étiquettes de clé lors de la fusion des données.
@Chase solution utile. Peut-on être adapté pour ajouter une ligne modèle intégrée à un point i> J'ai essayé d'adapter une technique de parcelle R () standard pour ajouter des lignes courbes (voir le lien ci-dessous: Les 2 dernières pages se rapportent) à GGPLot2 à l'aide de ce processus de fusion, mais bien sûr terminé avec des lignes représentant les données de point d'origine. Suis-je dans le mauvais sens?
@geotheory - Yep, cela ne devrait pas être très problématique du tout. GGPLOT2 CODE> a des geomes spécifiques pour des points et un autre qui correspond à un modèle de votre choix de vos données. Pour adopter les données ci-dessus pour montrer à un XY ScatterPlot avec un ABLINE à partir du modèle linéaire serait
geom_point () + geom_smooth (méthode = "lm") code>. Découvrez le Site Web GGPLOT2 pour plus de détails sur les différentes geoms disponibles.
Vous obtenez une seule ligne si vous faites fondre une liste sans noms