如何使年龄金字塔像R中的情节?


14

年龄金字塔看起来像这样: 替代文字
我想做类似的事情,即2个具有相同类别的条形图(不是直方图),它们像金字塔一样垂直旋转并向两侧延伸。
这是在R中执行此操作的简单方法吗?
控制每个条形的颜色也是很好的。

Answers:


21

你可以做到这一点pyramid.plot()功能,plotrix包。这是一个例子:

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

最终看起来像这样: 替代文字


好吧,的确,我完全重写了它,使其在两侧具有不同的比例,但是似乎R中没有什么可以自然地做到这一点。

我确信您可以使用ggplot2做到这一点,但这需要一些努力。
Shane 2010年

@mbq另外,FYI在HH程序包中还具有金字塔图功能。该站点上的问题提供了Likert类型数据的示例,我想可以将其黑客化以生成类似的条形图。在ggplot2中,一个将需要显示反射计数,一种简单的方法是仅使一个条为负,另一条为正(尽管不确定ggplot2是否支持像金字塔图那样的镜像尺寸)。
安迪W
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.