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 :

afficher les valeurs d'une matrice en pie


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 242
    Par défaut afficher les valeurs d'une matrice en pie
    Bonjour à tous,

    Voilà, je débute vraiment en R.
    Je suis face plusieurs interrogations que j'ai du mal à formuler et donc à solutionner en cherchant dans la doc (pas de mots clé donc pas de chocolat)

    Voici ma matrice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	[0-25]	[25-50]	[50-75]	[75-100]
    E1	0	4	10	0	
    E2	0	0	5	0	
    E3	0	1	0	0	
    E4	0	8	1	0	
    E5	0	19	4	0
    Voici mon code (et là j'ai eu beaucoup d'aide de mes collègues) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    matppbrut <- read.table("/Users/drula/scripts/data/cazydata/blast_tmp/result_full_predict_20110426_15:59:07.txt", header=T)
    colnames(matppbrut) <- substr(colnames(matppbrut), 2, 5)
    matppbrut <- t(matppbrut)
     
    nom <- "/Users/drula/scripts/data/cazydata/blast_tmp/test.png"
    png(filename=nom,width=750, height=600,units="px",pointsize=12,bg="white",res=100)
    pie(matppbrut[,1], main = names(matppbrut[1,][1]))
    legend("topleft", colnames(matppbrut), cex=0.7, col=c("#FF69B4","#FF6600","#FF69B4","#AA9900","#33FF33","#AB003C"),pch=16:21, lty=2)
    dev.off()
    Je voudrais faire pour chaque ligne un camembert representatif du nombre de valeurs pour chaque quart (de 100% ).
    Donc j'ai du retourné ma matrice sinon ca marchait pas .

    Les problèmes que je rencontre:
    _ le header du tableau est pas du tout pris correctement en compte ca donne sur mon pie 50.7 au lieu de [50-75] : donc probleme d'integration du - ?

    _ le probleme des valeurs zero: ca donne une barre toute fine sur le camembert ca fait moche. Je voudrais que ces valeurs ne soient pas affiches lors de la generation du graph . J'ai pense faire un tableau donc une matrice par E (donc un fichier plat par E aussi ?)
    Images attachées Images attachées  

  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,

    Dans la mesure où je ne dispose pas de votre fichier de données, je ne sais pas de quelle manière sont gérés les noms de vos colonnes.

    Cependant, j'ai rédigé le code suivant en me basant sur ce que j'ai compris que vous cherchiez à faire. Il fonctionne parfaitement et les labels des parts du camembert sont corrects. Il pourrait sûrement être fait plus proprement (si vous avez beaucoup de lignes, l'utilisation d'une boucle n'est peut-être pas très optimale...), mais cela vous donnera peut-être une idée de comment procéder pour supprimer les éléments ayant pour valeur zéro.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    M<-matrix(c(0,0,0,0,0,4,0,1,8,19,10,5,0,1,4,0,0,0,0,0),byrow=FALSE,ncol=4)
     
    rownames(M)<-paste("E",1:5,sep="")
    colnames(M)<-c("[0-25]","[25-50]","[50-75]","[75-100]")
     
     
    par(mfrow=c(2,3))
     
    for(i in 1:nrow(M))
    {
    	A<-M[i,]
     
    	u<-NULL
    	for(k in 1:length(A))
    	{
    		if(A[k]==0)
    		{
    			u<-c(u,k)
    		}
    	}
     
    	A<-A[-u]
     
    	pie(A,main=rownames(M)[i],col=c("cornsilk", "skyblue"))
    }
    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.

  3. #3
    Membre confirmé Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 242
    Par défaut
    Merci pour cette réponse ! Ton script fait exactement ce que je veux
    Mon fichier d'entrée est vraiment le tableau prés formatée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	[0-25]	[25-50]	[50-75]	[75-100]
    E1	0	4	10	0	
    E2	0	0	5	0	
    E3	0	1	0	0	
    E4	0	8	1	0	
    E5	0	19	4	0
    Ma question suivante est la prise en compte des valeurs nulles que je voudrais remplacer par NA.
    Comment intégrer la 'non prise en compte' de ces valeurs?
    J'ai essaye avec na.rm=TRUE en argument dans le pie ,mais ca n'est pas pris en compte :S

  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
    Citation Envoyé par fripette Voir le message
    Ma question suivante est la prise en compte des valeurs nulles que je voudrais remplacer par NA.
    Comment intégrer la 'non prise en compte' de ces valeurs?
    J'ai essaye avec na.rm=TRUE en argument dans le pie ,mais ca n'est pas pris en compte :S
    Pourquoi remplacer les valeurs nulles par des NA?
    Dans l'exemple que j'ai créé ci-dessus, les valeurs nulles ne sont pas prises en compte dans le dessin des camemberts. Cela ne correspond pas à ce que vous souhaitez faire?


    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 confirmé Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 242
    Par défaut
    Si exactement mais cependant je ne vois pas (ou je ne la comprends pas ) la partie correspondant aux valeurs nulles
    est ce bien cette partie ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(A[k]==0)
    		{
    			u<-c(u,k)
    		}
    si oui pourriez vous me l'expliquer svp

  6. #6
    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
    Voici le même code que précédemment mais avec quelques commentaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    for(i in 1:nrow(M)) # boucle sur les lignes de la matrice M
    {
    	A<-M[i,]  # A contient la ième ligne de la matrice M
     
    	u<-NULL
     
    	for(k in 1:length(A)) # cette boucle permet de parcourir tous les éléments de A
    	{
    		if(A[k]==0) # si le kème élément de A vaut zéro, alors :
    		{
    			u<-c(u,k) # on stocke la position k à la suite dans le vecteur u
    		}
    	}
     
    	# à la fin de cette boucle "for", le vecteur u contient les emplacements des valeurs nulles dans A
     
    	A<-A[-u] # ici on supprime tous les éléments de A qui valent zéro
     
    	pie(A,main=rownames(M)[i],col=c("cornsilk", "skyblue"))
    }
    Si vous avez d'autres questions, n'hésitez pas


    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.

  7. #7
    Membre confirmé Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 242
    Par défaut
    C'est bon j'ai compris : je vais commenter pour ceux qui rencontreront ce même problème plus tard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    if(A[k]==0) # pour chaque valeur de la ligne si c'est egale a Zero 
    		{
    			u<-c(u,k) # je mets dans un vecteur l'index de la valeur nulle 
    		}
    	}
    
    	A<-A[-u] # je redefinis mon vecteur d'interet en prenant l'inverse de u (donc les indexes des valeurs NON nulles)

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

Discussions similaires

  1. [Débutant] afficher les valeurs d'une matrice dans un vecteur ?
    Par Imène_23 dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/08/2011, 12h39
  2. afficher les valeur d'une requete dans une combobox
    Par carlos587261 dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/06/2007, 08h45
  3. Afficher les valeurs d'une structure dans une matrice
    Par yabbiyou dans le forum MATLAB
    Réponses: 1
    Dernier message: 22/02/2007, 12h26
  4. recuper les valeurs d'une matrice
    Par marcelsoh1 dans le forum C
    Réponses: 2
    Dernier message: 06/09/2006, 16h48
  5. comment afficher les valeurs d'une semaine
    Par duck54 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/05/2006, 22h57

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