Bagaimana cara membuat piramida umur seperti plot di R?

14

Piramida zaman terlihat seperti ini: teks alternatif
Saya ingin membuat sesuatu yang serupa, yaitu 2 barplot (bukan histogram) dengan kategori yang sama, diputar secara vertikal dan memanjang ke kedua sisi seperti di piramida.
Apakah ini cara sederhana untuk melakukan ini di R?
Akan lebih baik untuk mengontrol warna setiap bar.


sumber

Jawaban:

21

Anda dapat melakukan ini dengan yang pyramid.plot()fungsi dari plotrixpaket. Ini sebuah contoh:

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

Yang akhirnya terlihat seperti ini: teks alternatif

Shane
sumber
Ok, memang saya menulis ulang sepenuhnya untuk memiliki skala yang berbeda di kedua sisi, tetapi tampaknya tidak ada dalam R yang dapat melakukannya secara asli.
Saya yakin Anda bisa melakukannya dengan ggplot2, tetapi itu akan membutuhkan sedikit usaha.
Shane
@ mbq Juga FYI ada kemampuan bagan piramida dalam paket HH . Ini pertanyaan di situs memberikan contoh untuk tipe data Likert, yang saya bayangkan dapat hacked untuk menghasilkan grafik yang sama bar. Dalam ggplot2 seseorang perlu menampilkan jumlah yang direfleksikan, cara mudah adalah dengan hanya memiliki satu batang negatif dan yang lainnya positif (tidak yakin apakah ggplot2 mendukung dimensi cermin seperti plot piramida).
Andy W