0
votes

GGPLOT2 - 4 Catégorical et 1 Variable continue

J'essaie de créer un graphique comme celui ci-dessous dans R, mais cela s'est révélé être plus difficile que de le faire dans Excel. X est une variable catégorique, y est continue, puis la couleur serait une variable dichotomique et un type de ligne autre. Comment puis-je continuer à le faire? J'ai essayé d'utiliser le code suivant, mais si je change l'une des dimensions de la ligne ou la couleur, cela donne simplement un avis "Erreur: Geom_Path: Si vous utilisez des lignes pointillées ou pointillées, la couleur, la taille et la ligne de ligne doivent être constantes sur la ligne". Comment puis-je l'adapter?

ggplot(RT, aes(x= Block, y= mean, group = Probability, color=Probability))+ 
  geom_errorbar(aes(ymin=mean-CI, ymax=mean+CI), width=.1, 
            position=position_dodge(0.05)) + xlab("Epoch") +
 geom_line(aes(linetype=Probability), size = 1) + 
 geom_point(aes(shape=Probability))+
facet_wrap(~ Session, scales="free") + coord_cartesian(ylim = c(370, 530)) + 
  scale_color_grey(start=0.85, end=0.2)+
  theme_classic() 


4 commentaires

Pouvez-vous ajouter, s'il vous plaît, un exemple reproductible?


@iago auriez-vous besoin de données? Ou est-ce suffisant pour donner un peu d'entre eux? Les variables seraient: x (entre et); y (variable continue - représentant des temps de réponse); variable 1 (entre 1 et 2) et variable 2 (entre 1 et 2). Je mentionne qu'il y a cinq variables, mais la cinquième résulterait de deux graphiques, une pour chaque session. J'ai du mal à représenter les deux variables (variable 1 et 2) dans le même graphique.


Oui, certaines données reproductibles sont nécessaires (regardent Stackoverflow.com/help/minimal-reproductible-example ). Comme dans la réponse à @ Allan-Cameron: ne répond pas à votre question? Pourquoi? Qui est différent dans vos données avec l'exemple data.frame qu'il définit? C'est à cause de cela, vous devez ajouter des données reproductibles, pour savoir exactement ce que vous voulez.


J'espère que le jeu de données aide, je n'ai tout simplement pas réussi à comprendre ce qu'ils signifiaient par «groupe» car je n'ai que quatre variables par graphique, avec le cinquième étant pour le Facet_Wrap. Donc, pour moi seulement le "ggplot (df) + geom_line (AES (x, y, couleur = var1, linetype = var2), stat =" identité ")" + facet_wrap (~ var3, balance = "free") a un sens. Mais cela n'entraîne pas le graphique que je désire.


3 Réponses :


1
votes

Il est possible de faire en ajoutant une variable de regroupement et une esthétique de groupe. Voici un reprex complet: xxx

Créé le 2020-08-03 par le package Reprex (v0.3.0)


0 commentaires

1
votes

Il serait plus facile de voir ce qui se passe mal si vous postez un échantillon de vos données afin que nous puissions prendre votre code GGPLOT et l'exécuter pour voir ce qui se passe.

Cependant, une inspection rapide de votre code révèle certains problèmes. Vous mappez votre Probabilité Variable à quatre esthétiques: groupe, couleur, type et forme. Chacun des groupes, de couleur et de lineType doivent être mappés sur une variable différente.

Voici un exemple minimal. Dans cet exemple, j'ai une variable factice appelée groupe qui sépare chaque ligne. Je mappe var1 à couleur et var2 à lineType. Étant donné que mes données ont seulement un point par combinaison de x, y, groupe, de couleur et de lineType, je dois définir stat = identité pour laisser geom_line savoir que c'est intentionnel. xxx

voici la parcelle qu'il produit.

un tracé de ligne avec quatre lignes de couleurs et de lineype différents


1 commentaires

Je pense que je n'étais pas entièrement clair, je suis désolé. J'ai quatre variables catégoriques, l'une est la X, une autre est ce que vous représentéez comme Var1 et Var2 et, enfin, il y a un quatrième qui est censé résulter de deux graphes distincts (d'où la facette_wrap (~ session, la balance = "free") ). J'ai essayé d'utiliser votre exemple mais je ne suis pas sûr de ce que vous représentez par la variable "groupe".



1
votes

L'astuce consiste à effectuer une variable d'interaction à partir de vos vars var1 et var2 qui donne un facteur avec quatre niveaux représentant la série de quatre . (Fondamentalement, cela correspond à la variable dans la réponse par @allancameron). Cette nouvelle variable d'interaction peut ensuite être mappée sur les deux couleur et LineType qui entraîne une légende. Les couleurs et les traits de linetypes peuvent ensuite être définis via échelle_color_manual et échelle_linetype_manual . Essayez ceci: xxx


1 commentaires

J'aimerais pouvoir avoir sélectionné les réponses à la fois à la fois à la fois que j'ai utilisé une combinaison des deux. Mais puisque je ne réussirais pas à y arriver sans votre argument d'interaction, j'ai décidé d'accepter le vôtre comme le correct. Je vous remercie beaucoup pour votre aide!