Làm thế nào để tạo kim tự tháp tuổi như cốt truyện trong R?


14

Kim tự tháp tuổi trông như thế này: văn bản thay thế
Tôi muốn làm một cái gì đó tương tự, cụ thể là 2 barplots (không phải biểu đồ) với cùng thể loại, xoay theo chiều dọc và kéo dài sang cả hai bên như trong kim tự tháp.
Đây có phải là một cách đơn giản để làm điều này trong R?
Nó cũng sẽ tốt đẹp để kiểm soát màu sắc của mỗi thanh.

Câu trả lời:


21

Bạn có thể làm điều này với các pyramid.plot()chức năng từ plotrixgói. Đây là một ví dụ:

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

Mà kết thúc như thế này: văn bản thay thế


Ok, thực sự tôi đã viết lại nó hoàn toàn để có các thang đo khác nhau ở cả hai bên, nhưng có vẻ như không có gì trong R có thể làm điều đó một cách tự nhiên.

Tôi chắc chắn rằng bạn có thể làm điều đó với ggplot2, nhưng nó sẽ đòi hỏi một chút nỗ lực.
Shane

@mbq Ngoài ra FYI có một khả năng biểu đồ hình chóp trong gói HH . Câu hỏi này trên trang web đưa ra ví dụ cho dữ liệu loại Likert, mà tôi tưởng tượng có thể bị hack để tạo ra các biểu đồ thanh tương tự. Trong ggplot2, người ta sẽ cần hiển thị số lượng được phản ánh, một cách dễ dàng là chỉ có một thanh là âm và thanh kia là dương (không chắc là ggplot2 có hỗ trợ các kích thước được nhân đôi như các ô kim tự tháp hay không).
Andy W
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.