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

  1. #1
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    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 : 36
    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
    Points : 2 673
    Points
    2 673
    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.

  3. #3
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    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 : 36
    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
    Points : 2 673
    Points
    2 673
    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.

  5. #5
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    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 : 36
    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
    Points : 2 673
    Points
    2 673
    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.

  7. #7
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    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)

  8. #8
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    Par défaut
    Rebonsoir

    Bon finalement je rencontre un probleme lorsqu'il n'y a pas de valeurs NA (ou O )

    Voici l'exemple (j'ai mis byrow=TRUE car ca me semblait plus logique):
    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
     
    M<-matrix(c(1,74,104,26,0,4,22,2,0,5,3,0,0,17,11,0,0,34,25,8,0,3,2,0),byrow=TRUE,ncol=4)
     rownames(M)<-c("GH","CBM","X","CE","GT","PL")
     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("#B6D3E7","#FFD8A6","#7495AD","#A47334"))
    Et le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Error in -u : invalid argument to unary operator
    Execution halted
    logique parce que si je comprends bien -u est un vecteur vide non ? HELP :S

  9. #9
    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 : 36
    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
    Points : 2 673
    Points
    2 673
    Par défaut
    Re-bonsoir,

    Premièrement, petite remarque au passage : vous avez oublié l'accolade fermante de la boucle sur les lignes de M dans votre code.

    Ensuite, pour le problème du vecteur u à NULL, en effet comme dans le cas précédent cela ne se présentait pas, je n'y ai pas fait attention (shame on me ! ).
    Cependant, ce n'est pas un très gros soucis, il suffit juste, par exemple, d'ajouter un petit test sur la longueur du vecteur u :

    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
    	
    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)
     		}
     	}   
     		
    	if(length(u)!=0)
    	{
    		A<-A[-u]
    	}
    
     	pie(A,main=rownames(M)[i],col=c("#B6D3E7","#FFD8A6","#7495AD","#A47334"))
    }

    Cordialement,

    A.D.

  10. #10
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    Par défaut
    J'avais essayé quelque chose comme ça mais comme je ne connais pas encore la syntaxe en R :S

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if (u){
    A<-A[-u]
     
    }
    Mais bon comme on dit chez moi "pas-capable est mort sans essayer "

    Merci beaucoup !!!
    Et pour l'accolade je pense que c'est un oubli dans mon copier coller

  11. #11
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    Par défaut
    ReBonjour,
    Je suis desolee de revenir sur ce sujet mais je suis face à des détails:

    il faudrait que j'attribue une couleur FIXE à chaque colonne.

    En effet quand la premiere colonne est vide (ex [0-25]) la premiere couleur du vecteur c() est attribué a la valeur de la colonne deux (cad [25-50]).

    Or comme j'affiche plusieurs camemberts, il faudrait garder l'harmonie des couleurs entre ceux ci.

    Si vous ne voyez pas de solution simple, je vous remercie malgre tout du temps que vous m'auriez accordé.

  12. #12
    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 : 36
    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
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,


    Je ne suis pas sur mon ordi et ne peux donc pas tester sous R, mais je pense que quelque chose comme ceci devrait faire l'affaire :


    • Créer un vecteur contenant les couleurs correspondant à chacune des différentes classes, par exemple :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      couleurs=c("#B6D3E7","#FFD8A6","#7495AD","#A47334")
    • Inclure dans la boucle précédente le code en rouge ici :

      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
      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)
       		}
       	}   
       		
      	if(length(u)!=0)
      	{
      		A<-A[-u]
                      COL<-couleurs[-u]
      	}
      
       	pie(A,main=rownames(M)[i],col=COL)
      }


    Normalement ça devrait faire l'affaire


    Cordialement,

    A.D.

  13. #13
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    Par défaut
    Effectivement A. D.
    Ça va presque et c'est justement à cause du presque que je réponds car je suis fière de commencer à comprendre (oui je suis pour l'auto congratulation !) :

    Il faut penser à remettre à NULL le vecteur COL car sinon on garde en mémoire le vecteur qu'on avait rempli précédemment

  14. #14
    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 : 36
    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
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Citation Envoyé par fripette Voir le message
    Il faut penser à remettre à NULL le vecteur COL car sinon on garde en mémoire le vecteur qu'on avait rempli précédemment
    Ici ce n'est pas un problème car on ne concatène pas le vecteur COL, on le remplace simplement par "couleurs[-u]", donc à chaque passage dans la boucle, l'ancien vecteur COL est écrasé et remplacé par les nouvelles valeurs souhaitées.
    Cela dit, pour plus de sûreté vous pouvez effectivement ajouter une réinitialisation à NULL dans tous les cas où vous avez un doute, à condition de la placer au bon endroit bien sûr

    Bonne continuation


    Cordialement,

    A.D.

  15. #15
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    Par défaut
    He bien je ne dois pas tout comprendre alors finalement

    Voici mon code:
    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
    26
    27
    28
     
    M<-matrix(c(0,2,0,0,0,266,38198,11963,5841,2271),byrow=TRUE,ncol=5)
    rownames(M)<-c("GTb","GT")
    colnames(M)<-c("[0-25]","[25-50]","[50-75]","[75-100]","[100]")
    nom <- "GT_pourcent.png"
    png(filename=nom,width=750, height=600,units="px",pointsize=12,bg="white",res=100) 	
    couleurs<-c("#F2863D","#F2C76D","#5C7CCD","#59C0C5", "#00858B") 
    par(mfrow=c(2,3))
    	for(i in 1:nrow(M)){
    		A<-M[i,]
    		u<-NULL
    		COL<-NULL
     
    		for(k in 1:length(A)){
    			if(A[k]==0){
    				u<-c(u,k)
    			}
    		}   
     
    		if(length(u)!=0){
    			A<-A[-u]
    			COL<-couleurs[-u]
     
    		}
    		print(A)
    		print(COL)
    		pie(A,main=rownames(M)[i],col=COL)	
    	}
    Et lorsque j'enleve la ligne COL<-NULL , j'ai mes deux camemberts qui ont tous les deux l'unique couleur #F2C76D qui correspond au 2 (deuxieme valeur de la Matrice).
    Je me suis dis effectivement que c'etait pas pratique de remettre toujours la variable a NULL.


    Le Rout:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     
    > M<-matrix(c(0,2,0,0,0,266,38198,11963,5841,2271),byrow=TRUE,ncol=5)
    > rownames(M)<-c("GTb","GT")
    > colnames(M)<-c("[0-25]","[25-50]","[50-75]","[75-100]","[100]")
    > nom <- "GT_pourcent.png"
    > png(filename=nom,width=750, height=600,units="px",pointsize=12,bg="white",res=100) 	
    > couleurs<-c("#F2863D","#F2C76D","#5C7CCD","#59C0C5", "#00858B") 
    > 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)
    + 			}
    + 		}   
    + 		
    + 		if(length(u)!=0){
    + 			A<-A[-u]
    + 			COL<-couleurs[-u]
    + 						
    + 		}
    + 		print(A)
    + 		print(COL)
    + 		pie(A,main=rownames(M)[i],col=COL)	
    + 	}
    [25-50] 
          2 
    [1] "#F2C76D"
      [0-25]  [25-50]  [50-75] [75-100]    [100] 
         266    38198    11963     5841     2271 
    [1] "#F2C76D"
    > 
    > proc.time()
       user  system elapsed 
      0.302   0.038   0.345

  16. #16
    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 : 36
    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
    Points : 2 673
    Points
    2 673
    Par défaut
    Le problème ne vient pas du fait de mettre ou non le vecteur COL à NULL.
    En fait, il vient simplement du fait que nous avons oublié le cas où aucune des valeurs de la ligne (A) n'est nulle ! Comme dans l'exemple pris précédemment, toutes les lignes contenaient des valeurs nulles, mon programme tournait. Il faut donc ajouter les éléments suivants en rouge :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    M<-matrix(c(0,2,0,0,0,266,38198,11963,5841,2271),byrow=TRUE,ncol=5)
    
    rownames(M)<-c("GTb","GT")
    colnames(M)<-c("[0-25]","[25-50]","[50-75]","[75-100]","[100]")
    
    nom <- "GT_pourcent.png"
    
    png(filename=nom,width=750, height=600,units="px",pointsize=12,bg="white",res=100) 	
    
    couleurs<-c("#F2863D","#F2C76D","#5C7CCD","#59C0C5", "#00858B") 
    
    par(mfrow=c(2,3))
    
    for(i in 1:nrow(M))
    {
    	A<-M[i,]
    	u<-NULL
    	#COL<-NULL
    		
    	for(k in 1:length(A))
    	{
    		if(A[k]==0)
    		{
    			u<-c(u,k)
    		}
    	}   
    		
    	if(length(u)!=0)
    	{
    		A<-A[-u]
    		COL<-couleurs[-u]
    						
    	}
    	else
    	{
    		COL<-couleurs
    	}
    		
    
    	print(A)
    	print(COL)
    	pie(A,main=rownames(M)[i],col=COL)	
    }

    Cordialement,

    A.D.

  17. #17
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    Par défaut
    Je ne peux que m'incliner: merci beaucoup .
    Juste un peu de souci pour faire la mise au point avec le vecteur u qui est remplit ou pas en fonction de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(A[k]==0)
    		{
    			u<-c(u,k)
    		}
    C'est cette notation un peu bizarre qui me trouble :

  18. #18
    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 : 36
    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
    Points : 2 673
    Points
    2 673
    Par défaut
    De rien

    Sinon, pour obtenir de l'aide sur une fonction R, procéder comme suit :

    Donc pour plus d'infos sur ce à quoi correspond :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(A[k]==0)
    {
    	u<-c(u,k)
    }
    Taper dans R :
    En fait ici, on initialise à chaque passage dans la boucle générale le vecteur u à NULL. Puis, pour chaque élément k de la ligne A, si celui-ci vaut zéro, alors on ajoute le numéro k lui correspondant "au bout" du vecteur u. Il s'agit donc d'une concaténation d'éléments.


    Cordialement,

    A.D.

  19. #19
    Membre régulier Avatar de fripette
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    241
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 241
    Points : 71
    Points
    71
    Par défaut
    ReeeeeeBonjour,

    Toujours pour paufiner mon camembert : j'aimerais afficher une information supplémentaire : le nb d'effectif par partie du camembert.

    Un exemple est plus parlant pour moi :Voici notre matrix
    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
    Sur mon pie, j'aimerais afficher les informations que d'habitude mais en plus 4 sur la partie [25-50] et 10 pour [50-75].
    Comme ici les pourcentages : http://code.google.com/intl/fr/apis/.../piechart.html

    Mais je n'ai pas trouve le mot réserve pour ajouter sur le camembert les effectifs en plus du nom des colonnes (colnames).
    Je pense qu'au final je vais certainement passer par les boxplot car il me semble que plus d'informations peut être affiché.

    Merci Merci

    Au final, avec tous nos post, on peut faire une doc tres interessante sur les pie pour les mettre dans la partie tuto de R sur developpez. Si c'est possible, Je veux bien le faire

  20. #20
    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 : 36
    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
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Je ne sais pas s'il est possible de faire avec R un camembert exactement sur le même modèle que celui que vous mettez en lien (j'utilise très rarement les camemberts), cependant, voici une idée s'en rapprochant un peu (après il faut sûrement ajuster les paramètres de la légende en fonction du cas) :

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    M<-matrix(c(0,4,10,0,0,0,5,0,0,1,0,0,0,8,1,0,0,19,4,0),byrow=TRUE,ncol=4)
     
    rownames(M)<-paste("E",1:5,sep="")
    colnames(M)<-c("[0-25]","[25-50]","[50-75]","[75-100]")
     
    namescol<-colnames(M)
     
     
    couleurs<-c("#F2863D","#F2C76D","#5C7CCD","#59C0C5", "#00858B") 
     
    par(mfrow=c(2,3))
     
    for(i in 1:nrow(M))
    {
    	A<-M[i,]
    	u<-NULL
    	#COL<-NULL
     
    	for(k in 1:length(A))
    	{
    		if(A[k]==0)
    		{
    			u<-c(u,k)
    		}
    	}   
     
    	if(length(u)!=0)
    	{
    		A<-A[-u]
    		COL<-couleurs[-u]
    		NAMESCOL<-namescol[-u]
     
    	}
    	else
    	{
    		COL<-couleurs
    		NAMESCOL<-namescol
    	}
     
     
    	print(A)
    	print(COL)
    	pie(A,main=rownames(M)[i],col=COL,labels=A)	
     
    	legend("topright",legend=NAMESCOL,pch=15,col=COL)
    }

    Sinon, concernant la doc sur les camemberts, si vous vous en sentez le courage, je veux bien servir de relecteur ou éventuellement aider pour compléter certains points. Tenez-moi au courant


    Cordialement,

    A.D.

+ 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