Як зробити вікову піраміду подібно сюжету в R?


14

Вікова піраміда виглядає приблизно так: alt текст
я хотів би зробити щось подібне, а саме 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))

Виходить так: alt текст


Гаразд, я повністю переписав це з різними масштабами з обох сторін, але здається, що в R немає нічого, що може зробити це на самому місці.

Я впевнений, що ви могли це зробити за допомогою ggplot2, але це зажадає трохи зусиль.
Шейн

@mbq Також у FYI є пакет можливостей піраміди в пакеті HH . Це запитання на сайті дає приклади даних про тип Likert, які, на мою думку, можуть бути зламані для створення подібних діаграм. У ggplot2 потрібно було б відобразити відображені підрахунки, простий спосіб - просто мати один бар негативним, а інший - позитивним (не впевнений, чи підтримує ggplot2 дзеркальні розміри, як пірамідні ділянки).
Andy W
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.