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 :

nuage de points avec condition


Sujet :

R

Vue hybride

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Par défaut nuage de points avec condition
    Bonjour à tous,

    J'aimerais faire un nuage de points en distinguant deux classes de deux couleurs différentes. J'ai un tableau/matrice, nommé x, ayant 2 colonnes et beaucoup de lignes.
    Puis j'ai un deuxième tableau, disons que j'ai appelé proba, n'ayant après différents calculs que des valeurs TRUE ou FALSE. Ce tableau fait exactement la même taille que le premier.

    Je voudrais tracer le nuage de points dans le plan x[,1],x[,2], avec par exemple un point rouge si dans le tableau proba j'ai TRUE en première colonne et FALSE en deuxième, et un point vert si c'est le contraire (j'ai forcément TRUE et FALSE à chaque ligne, je peux pas avoir une ligne avec deux fois TRUE ou deux fois FALSE).

    J'ai deux problèmes : je ne sais pas comment intégrer ma condition sur proba, et l'autre, c'est que meme sans condition, je ne sais pas faire des couleurs différentes de manière simple. On m'a parlé d'une commande text(), donc je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    plot(x[,1],x[,2],'n')
    text(...)
    text(...)
    et peu importe ce que je mets à la place des points de suspension j'ai toujours une fenêtre graphique vide.

    Merci de votre aide !

  2. #2
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonjour,

    Alors, comme son nom l'indique, la commande "text" va plutôt servir à ajouter du texte sur un graphe, par exemple les libellés associés aux points.
    Pour ce qui est de définir la couleur des points d'un graphique créé avec la fonction "plot", il faut avoir recours au paramètre col de cette fonction. Pour obtenir l'aide de cette fonction ainsi qu'une liste non exhaustive de ses paramètres, voir :
    Je vous conseille également de prendre le temps de parcourir quelques tutoriels contenant les bases de R (vous en trouverez par exemple ici : http://r.developpez.com/).

    Sinon, concernant votre problème de condition, je pense que le plus simple est de créer un vecteur "couleur" qui aura autant d'éléments qu'il y a de lignes dans le tableau "proba".
    Pour ce faire, il y a sûrement plusieurs moyens. Personnellement je créerais une fonction "test" (utiliser IF) pour savoir si une ligne de "proba" vaut (TRUE,FALSE) ou bien (FALSE,TRUE) (on peut aussi se contenter de tester le premier élément de la ligne), et en fonction je remplirais le tableau "couleur" par rouge ou bien vert.
    Je ne sais pas si c'est très clair, je vous laisse chercher par vous-même mais si vous avez des questions n'hésitez pas.

    Bon courage !


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Par défaut
    Bonjour et merci pour cette réponse. J'ai lu de la doc et essayé comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    couleur=rep('red',n)
    t=rep('x',n)
    for(i in 1:n){
    	if(classe[i,1]==TRUE){
    		couleur[i]='green'
    		t[i]='o'
    	}
    }
    plot(x[,1],x[,2],pch=t,col=couleur)
    avec classe qui est mon tableau de TRUE/FALSE (n le nombre de lignes). Et ça marche super !

    Je pense qu'il y a plus concis/élégant que cette solution double boucle for/if (en tout cas en Python je pense bien que j'arriverais mais en R est-ce possible ?)

    En tout cas le résultat est là. Merci !

  4. #4
    Modératrice

    Femme Profil pro
    Statisticienne, Fondatrice de la société DACTA
    Inscrit en
    Juin 2010
    Messages
    893
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Statisticienne, Fondatrice de la société DACTA

    Informations forums :
    Inscription : Juin 2010
    Messages : 893
    Par défaut
    Bonsoir,

    Votre solution me paraît bien
    Après pour faire plus concis/joli en R vous avez à disposition les fonctions de la famille apply ("apply", "sapply", "lapply", "tapply", ...) qui vous permettront de vous passer des boucles dans de nombreux cas (comme le votre ici). Je vous conseille vivement d'y jeter un coup d'oeil car c'est très pratique/recommandé. Si vous avez des questions à ce sujet, n'hésitez pas !

    Bonne continuation


    Cordialement,

    A.D.

    Forum R
    Fournir le code utilisé (pensez aux balises code !), les packages nécessaires, ainsi qu'un court mais représentatif extrait du jeu de données et les éventuels messages d'erreur.
    Recherche d'informations concernant R : RSiteSearch / tutoriels : http://r.developpez.com/cours/ .

    Pensez également au bouton "Résolu" et à voter (en bas à droite des messages) lorsque vous avez obtenu une réponse satisfaisante.

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2011
    Messages : 9
    Par défaut
    Ok je vais regarder ces fonctions ! Merci beaucoup !

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

Discussions similaires

  1. [XL-2003] Tracé graphique (nuage de point) avec liste déroulante comme source de l'abscisse
    Par rbonnard dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/03/2013, 13h08
  2. Créer un graph (nuage de points) avec les abscisses par défaut
    Par Ub1quity dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/02/2012, 19h15
  3. [Débutant] nuage de points avec ecarts types ?
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 3
    Dernier message: 05/11/2011, 00h59
  4. afficher nuage de points avec opengl
    Par 3aychoucha dans le forum OpenGL
    Réponses: 4
    Dernier message: 04/06/2011, 11h33
  5. [XL-2007] MACRO - Création d'un nuage de points avec des couleurs differentes
    Par pachalcs dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/01/2011, 10h03

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