Как сделать возрастную пирамиду похожей на сюжет в R?

14

Возрастная пирамида выглядит следующим образом: альтернативный текст
я хотел бы сделать что-то похожее, а именно 2 барплота (не гистограммы) с одинаковыми категориями, повернутыми вертикально и простирающимися в обе стороны, как в пирамиде.
Это простой способ сделать это в R?
Также было бы неплохо контролировать цвет каждой полосы.


источник

Ответы:

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, но это потребует немного усилий.
Шейн
@mbq Также, к вашему сведению, в пакете HH есть возможности пирамидальной диаграммы . Этот вопрос на сайте приводит примеры данных типа Лайкерта, которые, я думаю, могут быть взломаны для создания аналогичных гистограмм. В ggplot2 нужно было бы отображать отраженные значения, простой способ состоит в том, чтобы один столбец был отрицательным, а другой - положительным (хотя не уверен, что ggplot2 поддерживает зеркальные измерения, такие как графики пирамид).
Энди У