Wie mache ich ein alterspyramidenähnliches Grundstück in R?

14

Die Alterspyramide sieht so aus: Alt-Text
Ich möchte etwas Ähnliches machen, nämlich 2 Balkendiagramme (keine Histogramme) mit den gleichen Kategorien, die vertikal gedreht sind und sich wie bei der Pyramide nach beiden Seiten erstrecken.
Ist es eine einfache Möglichkeit, dies in R zu tun?
Es wäre auch schön, die Farbe jedes Balkens zu steuern.


quelle

Antworten:

21

Sie können dies mit der pyramid.plot()Funktion aus dem plotrixPaket tun . Hier ist ein Beispiel:

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))

Was am Ende so aussieht: Alt-Text

Shane
quelle
Ok, tatsächlich habe ich es komplett umgeschrieben, um auf beiden Seiten unterschiedliche Maßstäbe zu haben, aber es scheint, dass es in R nichts gibt, was es nativ tun kann.
Ich bin sicher, dass Sie es mit ggplot2 tun könnten, aber es würde ein wenig Aufwand erfordern.
Shane
@mbq Außerdem gibt es im HH-Paket eine Pyramidendiagrammfunktion . Diese Frage auf der Website enthält Beispiele für Likert-Typdaten, die meines Erachtens gehackt werden können, um ähnliche Balkendiagramme zu erstellen. In ggplot2 müsste man gespiegelte Zählwerte anzeigen. Eine einfache Möglichkeit besteht darin, dass nur ein Balken negativ und der andere positiv ist (nicht sicher, ob ggplot2 gespiegelte Dimensionen wie Pyramidendiagramme unterstützt).
Andy W