2017-07-17 2 views
0

J'ai une ligne de code que je cours sur certaines données pour faire un tracé MDS. Commençons par les premières données:Pourquoi ces deux ggplots, générés de la même manière, ordonnent-ils différemment les légendes? Comment puis-je le contrôler?

Data for MDS 1

Data for MDS 2

Je crée des parcelles MDS en utilisant cette ligne de code:

ggplot(mds, aes(X1,X2,color=Virus_Treatment,shape=Infection)) + geom_point(size=3) + ggtitle("MDS Plot") + theme(plot.title = element_text(lineheight=.8, face="bold")) 

Quand je indiquerez les données pour MDS 1, il semble comme ceci: MDS plot 1

Lorsque je trace les données pour MDS 2, cependant, cela ressemble à ceci: enter image description here

Premier numéro: Pourquoi la légende d'infection est-elle en haut pour MDS 1 et en bas pour MDS 2? J'ai littéralement exécuté le même code, pourquoi la légende change-t-elle son comportement? Je veux de la cohérence entre ces parcelles. Est-il possible de spécifier comment les légendes sont commandées?

Deuxième problème: Je souhaite que les couleurs soient cohérentes pour la partie Virus_Treatment. Dans MDS 2, il y a 1 type de données de plus que dans MDS 1, ce qui supprime la cohérence des couleurs. Existe-t-il un moyen de réorganiser les données pour MDS 2 afin que la nouvelle couleur soit à la fin de la liste, ou pour définir manuellement un jeu de couleurs statique? Je dois garder les mêmes couleurs sur les graphiques, même si le nombre de couleurs utilisées est différent.

Merci d'avance pour tout commentaire à ce sujet!

+1

Les légendes de couleurs sont déterminées en fonction des niveaux du facteur. Utilisez 'factor()' sur 'Virus_Treatment' dans les deux ensembles de données et spécifiez' levels' pour être la liste complète des valeurs uniques, dans l'ordre que vous voulez. – Gregor

+1

Vous pouvez définir des couleurs via 'scale_color_manual'; voir, par exemple, [ici] (https://stackoverflow.com/questions/19068432/ggplot2-how-to-use-same-colors-in-different-plots-for-same-factor). Je me souviens que l'ordre de la légende peut être [secret et imprévisible] (https://stackoverflow.com/a/11397958/2461552); voir l'argument "order" de 'guide_legend' pour contrôler l'ordre. – aosmith

Répondre

0

Merci à Gregor et aosmith pour leurs réponses. C'est ce que j'ai fait pour résoudre ces problèmes:

Virus_Treatments <- factor(mds$Virus_Treatment, 
    levels = c("ACali09_contact", "AChkShng113_principal", 
       "AShng113_principal", "mock_mock", "ACali09_principal")) 

color_set = c("#F8766D", "#7CAE00", "#00BFC4", "#C77CFF", "#FF61C3") 

ggplot(mds, aes(X1,X2,color=Virus_Treatments,shape=Infection)) + geom_point(size=3) + ggtitle("MDS Plot") + theme(plot.title = element_text(lineheight=.8, face="bold")) + guides(colour = guide_legend(order = 2), shape = guide_legend(order = 1)) + scale_colour_manual(values=color_set)