Attribuer une couleur aux individus dans un nuage de points

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

Stéphanie Juillard
Messages : 20
Enregistré le : 04 Oct 2008, 17:43

Attribuer une couleur aux individus dans un nuage de points

Messagepar Stéphanie Juillard » 08 Nov 2008, 17:40

Je crois que tout est dans le titre... Je cherche à attribuer des couleurs différentes à des individus dans un nuage de points.
Je m'explique : je dispose des coordonnées de ces individus sur deux axes (des composantes principales d'une ACP), en excluant une variable indépendante nominale. J'aimerai la rajouter en colorant les individus selon leur modalité de cette variable.
Comment faire pour faire apparaître les cinq premiers individus en vert, les cinq suivant en rouge, etc. ?
En termes de couleurs, je ne connais que la commande suivante que je ne peux pas appliquer à mon cas :
> ifelse(nom variable == "modalité variable", "blue", "red")

Nicolas Péru
Messages : 1408
Enregistré le : 07 Aoû 2006, 08:13

Messagepar Nicolas Péru » 08 Nov 2008, 19:51

La question apparait réguilièrement :)
Il faut utiliser la fonction rechercher du forum, on trouve pas exemple :

viewtopic.php?t=861&highlight=couleur+acp

Stéphanie Juillard
Messages : 20
Enregistré le : 04 Oct 2008, 17:43

Messagepar Stéphanie Juillard » 09 Nov 2008, 11:28

Merci pour cette réponse.
Le problème est que je n'utilise pas le package ADE4 : je dois calculer (dans un premier temps) l'ACP manuellement, étape par étape.

Peut-être je peux reformuler ma question : comment définir un vecteur de plus de deux couleurs sous R ?

Renaud Lancelot
Messages : 2484
Enregistré le : 16 Déc 2004, 08:01
Contact :

Messagepar Renaud Lancelot » 09 Nov 2008, 15:38

Exemple:

Code : Tout sélectionner

dfr <- data.frame(x = runif(10),
                  y = runif(10),
                  z = sample(c("A", "B", "C"), size = 10, replace = TRUE))
cols <- with(dfr, ifelse(z == "A", "red",
                      ifelse(z == "B", "blue", "green")))
plot(y ~ x, col = cols, pch = 19, data = dfr)
with(dfr, text(x, y, z, adj = c(.5, -.5)))


Renaud

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Messagepar Logez Maxime » 10 Nov 2008, 09:20

Bonjour,

tu peux aussi le faire avec la fonction match :

Code : Tout sélectionner

# en reprenant l'exemple de Renaud :
z <- sample(c("A", "B", "C"), size = 10, replace = TRUE)
cols <- c("red","blue","green")[match(z,sort(unique(z)))]
table(cols,z)


Maxime


Retourner vers « Questions en cours »

Qui est en ligne

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