IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

formulation boucle couleur graphe


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Par défaut formulation boucle couleur graphe
    Bonjour,

    je cherche à faire un graphe avec des points x,y et dont la couleur est définie par une valeur de z.

    Voilà ce que j'ai écrit pour faire un test sachant que des valeurs de z sont > 2 et d'autres > à 2

    if (z[i] > 2) {col="red"} else {col="blue"} Seulement, mes points (ou ma courbe) sortent tous de la même couleur: ici bleu alors que la première valeur de z est > 2.

    Quelqu'un aurait-il donc plus de compétences que moi pour formuler une boucle qui assigne une couleur à mon point en fonction de sa valeur.

    Merci d'avance

  2. #2
    Membre chevronné
    Femme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Par défaut
    Bonjour,

    quelque chose comme cela?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x <- rnorm(10)
    y <- rnorm(10)
    z <- runif(10, 0, 4)
     
    plot(x,y, col=ifelse(z<2, "blue", "red"))
    Bonne journée

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Par défaut
    Super Merci!! :-)

    On frise l'objectif.
    N'étant que novice j'ai du mal à imaginer une extension de cette formule pour plusieurs classes de couleurs.

    Avec ifelse, on ne peut se permettre qu'une seule alternative?

    Si je veux faire z = 0 ==> col = "black",
    0 < z < 1 ==> col = "blue",
    1 < z < 2 ==> col ="red"
    ... et ainsi de suite,

    puis-je toujours utiliser ifelse ??

    Si oui comment?
    Sinon, comment écrire cette fonction?

    Merci!!

  4. #4
    Membre chevronné
    Femme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Par défaut
    En fait, cela dépend du nombre de "classes" que vous souhaitez définir pour les valeurs de z.

    On peut faire des ifelse imbriqués.

    En admettant que vous n'ayez que 3 classes (z=0, 0<z<=1, 1<z<=2), cela donnerait sur un exemple rapide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    x <- rnorm(10)
    y <- rnorm(10)
    z <- runif(9, 0, 2)
    z[10] <- 0
     
    plot(x,y, col=ifelse(z==0, "green", ifelse(z<=1, "red", "blue")))
    Bonne continuation

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Par défaut
    Merci beaucoup,

    c'est exactement ce que je cherchais.
    En revanche, je peine à faire plus de trois classes.

    Dans l'idée mes classes seraient:

    -1 < z < 0 ==> col ="black"

    0 < z < 1 ==> col = "turquoise"

    1 < z < 2 ==> col = "yellow"

    2 < z < 3 ==> col ="orange"

    z > 3 ==> col = "red"

    Est-ce possible de démultiplier les classes avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     col = ifelse(...), ifelse(...)
    Je n'en ai pas l'impression, mais cela vient peut être de mon manque de pratique.

    Merci pour votre aide.

    Bonne journée

  6. #6
    Membre éprouvé
    Inscrit en
    Mars 2009
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 94
    Par défaut
    ifelse c'est bien quand il y a 2 conditions, après on peut les combiner mais c'est pas simple à lire et à comprendre.

    Le mieux est de faire comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    x=rnorm(1000,0,5)
    col = rep(NA,length(x))
    col[x < -1]="black"
    col[x > 0 & x < 1]="cyan"
    col[x > 1 & x < 2]="yellow"
    col[x > 2 & x < 3]="orange"
    col[x > 3]="red"
    plot(x,col=col)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Changer valeur formule boucle vba multisheet
    Par baleiney dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/03/2012, 09h54
  2. Probleme boucle FOR +graphe
    Par larose29 dans le forum LabVIEW
    Réponses: 4
    Dernier message: 23/10/2009, 12h22
  3. Gestion couleur graph en anneau
    Par Saori dans le forum Excel
    Réponses: 1
    Dernier message: 25/03/2009, 12h53
  4. [RECH] Formule avec couleur
    Par roukmoot dans le forum Excel
    Réponses: 2
    Dernier message: 22/10/2008, 14h51
  5. [CR ?] Formule pour couleur de remplissage d'un champ
    Par leloup84 dans le forum Formules
    Réponses: 14
    Dernier message: 05/03/2008, 08h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo