Couleur

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

Alain Blanchet
Messages : 97
Enregistré le : 21 Mai 2013, 09:49

Couleur

Messagepar Alain Blanchet » 02 Oct 2017, 16:33

Bonjour,

Pour distinguer mes groupes par la couleur sur mes graphiques, je crée un vecteur qui s'appelle "couleur".

Pour deux groupes (G1 et G2), je sais faire, :


couleur <- ifelse(groupe == "G1",rgb(0.9, 0.1, 0.1), rgb(0, 0.7, 0))

Mais pour trois groupes(G1, G2 et G3), je ne sais pas faire pouvez vous me donner un coup de main ?

Merci à vous

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Couleur

Messagepar Pierre-Yves Berrard » 02 Oct 2017, 16:48

Bonjour,

On pourrait imbriquer deux ifelse :

Code : Tout sélectionner

ifelse(..., ifelse(..., vrai, faux), faux)
Mais même avec deux conditions, ça devient vite illisible.

switch est plus adapté dans ce cas :

Code : Tout sélectionner

couleur <-
  switch(
    groupe,
    G1 = rgb(0.9, 0.1, 0.1),
    G2 = rgb(0, 0.7, 0),
    G3 = rgb(...)
  )
PY

jean lobry
Messages : 733
Enregistré le : 17 Jan 2008, 20:00
Contact :

Re: Couleur

Messagepar jean lobry » 02 Oct 2017, 18:18

Bonjour Alain,

on peut faire beaucoup plus compact en utilisant l'indexation des vecteurs (pas besoin de ifelse() ni de switch()), tu trouveras un exemple dans la section 7.2 de ce document. C'est plus élégant (i.e. générique) du point de vue du code, mais ce n'est malheureusement pas une solution très puissante pour l'orpaillage des données.

Bien amicalement,

jean lobry

Alain Blanchet
Messages : 97
Enregistré le : 21 Mai 2013, 09:49

Re: Couleur

Messagepar Alain Blanchet » 02 Oct 2017, 20:01

Merci beaucoup,

Je teste de suite..

Très cordialement
Alain Blanchet

Alain Blanchet
Messages : 97
Enregistré le : 21 Mai 2013, 09:49

Re: Couleur

Messagepar Alain Blanchet » 02 Oct 2017, 20:19

Rebonjour,

J'ai un problème, j'obtiens ceci :

couleur <-
+ switch(
+ groupe,
+ G1 = rgb(0.9, 0.1, 0.1),
+ G2 = rgb(0, 0.7, 0),
+ G3 = rgb(0, 0.3,0.9)
+ )
Error in switch(groupe, G1 = rgb(0.9, 0.1, 0.1), SG1 = rgb(0, 0.7, 0), :
EXPR doit être un vecteur de longueur 1

Je ne comprends pas bien la notificaition

Pierre-Yves Berrard
Messages : 1029
Enregistré le : 12 Jan 2016, 23:30

Re: Couleur

Messagepar Pierre-Yves Berrard » 02 Oct 2017, 21:04

Est-ce que groupe est un vecteur de longueur 1 ?
PY

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

Re: Couleur

Messagepar Logez Maxime » 02 Oct 2017, 21:33

Bonjour,

La solution de Jean me semble plus pratique du moment que groupe est un facteur :

Code : Tout sélectionner

# pour l'exemple :
groupe <- sample(sprintf("G%d", 1:3), 30, rep = T)
groupe <- factor(groupe)

cols <- rgb(c(0.9,0.1,0),c(0,0.7,0.3), c(0.1,0,0.9))
couleur <- cols[groupe]

table(groupe, couleur)
      couleur
groupe #004DE6 #1AB300 #E6001A
    G1       0       0       7
    G2       0      10       0
    G3      13       0       0
   
x <- rnorm(30, as.numeric(groupe), 0.2)
plot(x, col = couleur)
Cordialement,
Maxime

Alain Blanchet
Messages : 97
Enregistré le : 21 Mai 2013, 09:49

Re: Couleur

Messagepar Alain Blanchet » 03 Oct 2017, 09:45

Merci beaucoup,

C'est parfait.

Très cordialement
Alain Blanchet


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité