Créer un histogramme d'age

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Imed Salah
Messages : 15
Enregistré le : 16 Oct 2017, 13:00

Créer un histogramme d'age

Messagepar Imed Salah » 17 Oct 2017, 07:22

Bonjour les forums,

j'ai un petit soucis concernant la création d'un histogramme d'age sous R studio. En effet, j'ai eu toutes les donnees d'ages et le nombre des effectifs pour chaque age.

Code : Tout sélectionner

Ages=c(28 30 38 31 47 52 37 44 62 32 58 35 29 41 53 34 26 36 45 51 46 40 43 60 27 42 50 25 57 54 23 63 33 48 56 39 24 21 55 61 22 65
 68 49 66 67 59 20 64 69)
Effectif=c(741 749 757 703 612 428 779 678 205 731 278 726 758 645 423 707 774 770 633 379 607 680 657 224 747 650 447 685 313 373 594
160 733 462 323 676 630 440 341 249 491 154 112 452 117 110 237 336 168  77)
# je crée un data frame
df=data.frame(Effectif,Ages)

pl <- ggplot(df,aes(x=Age))
pl + geom_histogram(binwidth=0.5,color='red',fill='pink')



Cepedant dans l'axe des ordonnees max(count)==1 et il montre un graphique bizare!!

merci pour votre aide

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Créer un histogramme d'age

Messagepar Logez Maxime » 17 Oct 2017, 08:14

Bonjour,

Il n'y a rien d'anormal a ce que tu observes dans le sens ou avant de tracer le graphique, il compte le nombre de valeurs présentes dans chaque intervalle de la variable d'intérêt. Ici il n'y en a qu'une à chaque fois. Si tu as déjà les effectifs de compter tu peux utiliser la fonction geom_bar pour tracer des barres avec pour hauteur les effectifs :

Code : Tout sélectionner

pl <- ggplot(df, aes(x = Ages, y = Effectif))
pl + geom_bar(width=0.5, color='red', fill='pink', stat = "identity")
Après pour pouvoir t'aider plus efficacement il serait sympa que tu envois tes données dans un format qui soit directement exploitable sous R, après un copier coller par exemple :

Code : Tout sélectionner

Ages=c(28,30,38,31,47,52,37,44,62,32,58,35,29,41,53,34,26,36,45,51,46,40,43,60,27,42,50,25,57,54,23,63,33,48,56,39,24,21,55,61,22,65,68,49,66,67,59,20,64,69)
Effectif=c(741,749,757,703,612,428,779,678,205,731,278,726,758,645,423,707,774,770,633,379,607,680,657,224,747,650,447,685,313,373,594,
160,733,462,323,676,630,440,341,249,491,154,112,452,117,110,237,336,168,77)
#,je,crée,un,data,frame
df=data.frame(Effectif,Ages)
Cordialement,
Maxime

Stéphane Adamowicz
Messages : 206
Enregistré le : 07 Mar 2012, 10:13
Contact :

Re: Créer un histogramme d'age

Messagepar Stéphane Adamowicz » 17 Oct 2017, 08:27

Bonjour,

je ne pratique pas ggplot,

mais dans votre code, rien n'indique à la fonction graphique quel est l'effectif dans chaque classe d'âge. C'est forcément la source de votre problème.

Par ailleurs, si vous voulez de l'aide, prenez soin de recopier votre code sans erreurs (il manque une bonne centaine de virgules dans votre envoi !), et facilitez nous la tâche en utilisant la fonction dput pour communiquer vos données : un dput(df) aurait fait l'affaire dans votre cas.

cordialement,

S Adamowicz
Stéphane Adamowicz
INRA, UR 1115 Plantes et Systèmes de Culture Horticoles (PSH)
domaine St Paul, site agroparc
84914 Avignon, cedex 9

Imed Salah
Messages : 15
Enregistré le : 16 Oct 2017, 13:00

Re: Créer un histogramme d'age

Messagepar Imed Salah » 17 Oct 2017, 09:02

Merci Maxime et S Adamowicz. je suis désolé de la qualité de la présentation de mon code.
J'ai réussi à tracer les barres.

Michaël Delorme
Messages : 67
Enregistré le : 04 Avr 2016, 10:21

Re: Créer un histogramme d'age

Messagepar Michaël Delorme » 17 Oct 2017, 09:18

Et si tu veux vraiment un histogramme, il faut créer les données pour chaque individu :

Code : Tout sélectionner

Ages <- c(28,30,38,31,47,52,37,44,62,32,58,35,29,41,53,34,26,36,45,51,46,40,43,60,27,42,50,25,57,54,23,63,33,48,56,39,24,21,55,61,22,65,68,49,66,67,59,20,64,69)
Effectif <- c(741,749,757,703,612,428,779,678,205,731,278,726,758,645,423,707,774,770,633,379,607,680,657,224,747,650,447,685,313,373,594,
df <- data.frame(age = rep(Ages, Effectif))


ainsi tu peux faire facilement des classes de 1 an, 10 ans, la densité ou autre :

Code : Tout sélectionner

ggplot(df, aes(age)) + geom_histogram(binwidth = 1)
ggplot(df, aes(age)) + geom_histogram(binwidth = 10)
ggplot(df, aes(age)) + stat_density()

Imed Salah
Messages : 15
Enregistré le : 16 Oct 2017, 13:00

Re: Créer un histogramme d'age

Messagepar Imed Salah » 17 Oct 2017, 13:11

Merci beaucoup Michaël Delorme ca marche !


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité