Couleurs graphiques

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Marion Bévillon
Messages : 22
Enregistré le : 24 Mai 2013, 09:19

Couleurs graphiques

Messagepar Marion Bévillon » 19 Juil 2013, 09:24

Bonjour,

Je bloque sur un problème surement tout bête à résoudre.
Je voudrais faire un plot x en fonction de y en spécifiant des couleurs pour chaque traitement. J'ai un tableau de ce genre:

Traitement..........x..................y
.......a..............valeur..........valeur
.......a..............valeur..........valeur
.......a..............valeur..........valeur
.......b..............valeur..........valeur
.......b..............valeur..........valeur
.......b..............valeur..........valeur
.......c..............valeur..........valeur
.......c..............valeur..........valeur
.......c..............valeur..........valeur

Sur mon nuage de points, je voudrais par exemple que les points du traitement a soient affichés en rouge, ceux du traitement b affichés en bleu et ceux du traitement c affichés en noir.
Comment dois-je spécifier ça dans la commande du plot? J'ai voulu essayer en faisant des graphiques superposés mais je n'arrive pas à bien coder.

Merci!
Marion.

Navarre Julien
Messages : 367
Enregistré le : 20 Avr 2012, 08:27

Messagepar Navarre Julien » 19 Juil 2013, 09:41

Salut, je pense que tu peux t'y prendre de la façon suivante :

Code : Tout sélectionner

color <- ifelse(data$traitement == "a", "red", "black")
plot(data$x, data$y, col = color, pch = 20)


Julien

Edit : je n'avais pas vu qu'il y avait 3 traitements differetens, je croyais 2, le ifelse() est plutôt limité dans ce cas.
Tu peux alors rajouter la ligne :
color[which(df$trait == "c")] = "black"
avant de tracer ton plot ou utiliser la solution de Victor.

Victor Perrier
Messages : 34
Enregistré le : 24 Avr 2012, 09:24

Messagepar Victor Perrier » 19 Juil 2013, 09:42

Hello,
Tu peux faire comme cela :

Code : Tout sélectionner

df <- data.frame(Traitement=sample(c("a", "b", "c") , 20, T), x=rnorm(20), y=rnorm(20))
couleurs <- rep("firebrick", nrow(df))
couleurs[df[, "Traitement"]=="b"] <- "lightblue"
couleurs[df[, "Traitement"]=="c"] <- "forestgreen"

plot(df$x, df$y, col=couleurs, pch=20)



Victor

Aurélien Madouasse
Messages : 352
Enregistré le : 26 Fév 2007, 11:23

Messagepar Aurélien Madouasse » 19 Juil 2013, 09:51

Bonjour,

Par exemple:

Code : Tout sélectionner

test <- data.frame(
          traitement = rep(letters[1:3], each = 3),
          x = runif(9),
          y = runif(9))

colr <- data.frame(
         traitement = letters[1:3],
         col = c("red", "blue", "green"))

plot(y ~ x,
     data = test, pch = 20,
     col = colr$col[match(traitement, colr$traitement)])


Aurélien

Marion Bévillon
Messages : 22
Enregistré le : 24 Mai 2013, 09:19

Messagepar Marion Bévillon » 19 Juil 2013, 12:17

Merci pour vos réponses.
Une collègue m'a donnée également une autre solution, que je trouve plus simple à appliquer (data étant le nom de mon tableau).

Si on se fiche des couleurs à appliquer aux différents traitements:

Code : Tout sélectionner

plot(data$x, data$y, col=as.numeric(as.factor(data$Traitement)))


Si les couleurs à appliquer aux différents traitements sont importantes:

Code : Tout sélectionner

couleurs<-c("blue", red", "black"); names(couleurs)<-c("a", "b", "c")
plot(data$x, data$y, col=couleurs[as.character(data$Traitement)])


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité