Comment faire une pyramide des âges comme une intrigue en R?

14

La pyramide des âges ressemble à ceci: texte alternatif
je voudrais faire quelque chose de similaire, à savoir un 2 barplots (pas des histogrammes) avec les mêmes catégories, tourné verticalement et s'étendant des deux côtés comme dans la pyramide.
Est-ce un moyen simple de le faire dans R?
Il serait également intéressant de contrôler la couleur de chaque barre.


la source

Réponses:

21

Vous pouvez le faire avec la pyramid.plot()fonction du plotrixpackage. Voici un exemple:

library(plotrix)
 xy.pop<-c(3.2,3.5,3.6,3.6,3.5,3.5,3.9,3.7,3.9,3.5,3.2,2.8,2.2,1.8,
  1.5,1.3,0.7,0.4)
 xx.pop<-c(3.2,3.4,3.5,3.5,3.5,3.7,4,3.8,3.9,3.6,3.2,2.5,2,1.7,1.5,
  1.3,1,0.8)
 agelabels<-c("0-4","5-9","10-14","15-19","20-24","25-29","30-34",
  "35-39","40-44","45-49","50-54","55-59","60-64","65-69","70-74",
  "75-79","80-44","85+")
 mcol<-color.gradient(c(0,0,0.5,1),c(0,0,0.5,1),c(1,1,0.5,1),18)
 fcol<-color.gradient(c(1,1,0.5,1),c(0.5,0.5,0.5,1),c(0.5,0.5,0.5,1),18)
 par(mar=pyramid.plot(xy.pop,xx.pop,labels=agelabels,
  main="Australian population pyramid 2002",lxcol=mcol,rxcol=fcol,
  gap=0.5,show.values=TRUE))

Ce qui finit par ressembler à ceci: texte alternatif

Shane
la source
Ok, en effet je l'ai complètement réécrit pour avoir des échelles différentes des deux côtés, mais il semble qu'il n'y ait rien dans R qui puisse le faire nativement.
Je suis sûr que vous pourriez le faire avec ggplot2, mais cela nécessiterait un peu d'effort.
Shane
@mbq Aussi FYI il y a des capacités de diagramme pyramidal dans le paquet HH . Cette question sur le site donne des exemples de données de type Likert, qui, j'imagine, peuvent être piratées pour produire des graphiques à barres similaires. Dans ggplot2, il faudrait afficher les nombres réfléchis, un moyen simple est de n'avoir qu'une barre négative et l'autre positive (je ne sais pas si ggplot2 prend en charge les dimensions en miroir comme les diagrammes pyramidaux).
Andy W