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 :

Barplot et courbe pourcentage cumulé


Sujet :

R

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 29
    Points
    29
    Par défaut Barplot et courbe pourcentage cumulé
    Bonjour,

    J'ai tracé un barplot et je souhaiterais y ajouter une courbe de fréquence cumulée.

    Les effectifs sont classé dans une variable x par ordre décroissant, j'ai donc calculé d'abord les fréquences de chacun:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    h=list()
    for(i in 1:length(x)){
    h[i]=x[i]*100/sum(x)}
    Puis les fréquences cumulées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    h2=list()
    h2[1]=h[[1]]
    for(i in 2:length(h2)){
    h2[i]=h2[[i]]+h2[[i-1]]}
    Ensuite j'ai mis les valeurs à l'échelle (celle de gauche):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(i in 1:length(h2)){
    h2[i]=h2[[i]]*max(x)/100}
    Et j'ai tracé mon barplot de cette façon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    par(mfrow=c(1,1),....)
    for(i in 1:length(h2)){
    bar=barplot(x,...)
    points(h2[[i]],type='b',lty=1,pch=10,col=2)
    axis(1,bar,labels=l,tick=T)
    axis(side=4,at=c(0,max(x)*0.25,max(x)*0.5,max(x)*0.75,max(x)),labels=c(0.0,25.0,50.0,75.0,100.0))
    Problème: ma courbe de fréquence ne s'affiche pas ...

    Merci de votre aide
    Did
    Images attachées Images attachées  

  2. #2
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Bonjour,

    Je pense qu'il y a une erreur dans ton calcul de h2... et surtout que tu te complique beaucoup la vie. Tu devrais essayer autant que possible de vectoriser les calculs et éviter les boucles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    x <- sort(rnorm(20, 2.5, 1), decreasing=TRUE)
    x
     
    h <- x * 100 / sum(x)
    h
     
    h2 <- cumsum(h)
    h2
     
    x2 <- barplot(x)
    par(new=TRUE)
    plot(x2, h2, xaxt="n", yaxt="n", bty="n")
    axis(side=4)
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Merci, c'est vari que c'est beaucoup plus simple comme ça.
    Derniers points:

    - comment faire pour l'axe de droite part de 0 ?
    - comment virer les noms h2 et bar sur le graphe ? (cf. figure)

    Merci
    Images attachées Images attachées  

  4. #4
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    x2 <- barplot(x)
    par(new=TRUE)
    plot(x2, h2, xaxt="n", yaxt="n", bty="n", ylab="", xlab="")
    axis(side=4, at=c(seq(0, 1, length=5) * max(h2)), labels=paste(seq(0, 1, length=5) * max(h2), "%"), xpd=NA)
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Ok, il s'avère maintenant que pour un autre pareto j'ai été obligé de rajouter un autre axis() pour l'axe des abscisses. Auparavant les labels étaient bien centrés au milieu de chaque bande horizontale, mais depuis que j'ai ajouté axis(side=4), ça n'est plus centré, voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    h21=x*100/sum(x)
    h22=cumsum(h21)
     
    bar2=barplot(x,las=2,ylim=c(0,max(x)+2),col=4,border="darkblue",main="Out Of Control EWMA_MEAN",ylab="Count",cex.names=0.6)
    par(new=TRUE,bty='l',cex.axis=0.6,cex.main=1.5,cex.lab=1.5,las=2,adj=0,col.main="darkblue",yaxs="r")
    plot(bar2,h22,type='b',lty=1,pch='19',col=2,xaxt="n",yaxt="n",bty="n",ylab="",xlab="")
    axis(1,bar2,labels=l,tick=T)
    axis(side=4,at=c(seq(0,1,length=5)*max(h22)),labels=paste(seq(0,1,length=5)*max(h22),"%"),xpd=NA)

    De plus, pour le tracer de la courbe de fréquence il m'affiche des "1" ?? alors que je lui ai demandé des points (pch=19) ...

    Merci
    Images attachées Images attachées  

  6. #6
    Membre expert
    Avatar de pitipoisson
    Homme Profil pro
    Chercheur
    Inscrit en
    Septembre 2006
    Messages
    1 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 942
    Points : 3 378
    Points
    3 378
    Par défaut
    Met ton premier axis avant le second plot.
    Citation Envoyé par did10 Voir le message
    De plus, pour le tracer de la courbe de fréquence il m'affiche des "1" ?? alors que je lui ai demandé des points (pch=19)...
    Euh, non, tu lui a demandé pch='19' !
    Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
    ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)

    Une solution vous convient ? N'oubliez pas le tag


    )><))))°>

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 51
    Points : 29
    Points
    29
    Par défaut
    Ah oui en effet, erreur de frappe pour pch=19, sinon tout fonctionne

    Merci pour ta rapidité
    A+

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

Discussions similaires

  1. [GRAPH] Superposer deux courbes de pourcentages cumulés
    Par kmel53 dans le forum ODS et reporting
    Réponses: 1
    Dernier message: 21/10/2012, 11h48
  2. [SQL2008][T-SQL] obtenir un total cumule et un pourcentage cumule
    Par Bernardos dans le forum Développement
    Réponses: 6
    Dernier message: 24/07/2011, 10h59
  3. Fréquences et pourcentages cumulés avec proc freq
    Par simon_allouche dans le forum SAS STAT
    Réponses: 2
    Dernier message: 29/09/2010, 22h46
  4. [JpGraph] Barplot échelle en pourcentage
    Par cycy_88 dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 17/05/2010, 16h58
  5. Pourcentage cumulé dans un groupe
    Par Civodul4 dans le forum Formules
    Réponses: 1
    Dernier message: 12/10/2007, 16h35

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