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.

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.