对于示例数据集,我按国家/地区创建金字塔图,显示人口中超重男性和女性的级别(%) .
library(plotrix)
xy.males.overweight<-c(23.2,33.5,43.6,33.6,43.5,43.5,43.9,33.7,53.9,43.5,43.2,42.8,22.2,51.8,
41.5,31.3,60.7,50.4)
xx.females.overweight<-c(13.2,9.4,13.5,13.5,13.5,23.7,8,3.18,3.9,3.16,23.2,22.5,22,12.7,12.5,
12.3,10,0.8)
agelabels<-c("uk","scotland","france","ireland","germany","sweden","norway",
"iceland","portugal","austria","switzerland","australia","new zealand","dubai","south africa",
"finland","italy","morocco")
par(mar=pyramid.plot(xy.males.overweight,xx.females.overweight,labels=agelabels,
gap=9))
我在这里使用'plotrix'找到了这种方法:https://stats.stackexchange.com/questions/2455/how-to-make-age-pyramid-like-plot-in-r
我希望创建一个稍微更详细的金字塔图,两边都添加一个堆积条形图,显示男性和女性的超重和百分比肥胖(最好是红色/蓝色的不同色调) . “肥胖”的示例数据值如下:
xx.females.obese<-c(23.2,33.5,43.6,33.6,43.5,23.5,33.9,33.7,23.9,43.5,18.2,22.8,22.2,31.8,
25.5,25.3,31.7,28.4)
xy.males.obese<-c(13.2,9.4,13.5,13.5,13.5,23.7,8,3.18,3.9,3.16,23.2,22.5,22,12.7,12.5,
12.3,10,0.8)
此外,如果图表上的“年龄”可以更改(到国家/地区),那将有所帮助 .
非常感谢您的任何帮助/建议 . 我愿意在适当时使用plotrix或ggplot2 .
2 回答
Plotrix可能更容易,但可以反汇编ggplot图表,并将它们排列为金字塔图 . 使用@ eipi10的数据(谢谢),并调整drawing-pyramid-plot-using-r-and-ggplot2中的代码,我为"males","females"和"country"标签绘制了单独的图 . 此外,我从其中一个地块中获取了一个传奇 . 诀窍是让左侧图表的刻度线出现在图表的右侧 - 我改编了mirroring-axis-ticks-in-ggplot2的代码 . 四个位("female"图,国家标签,"male plot"和图例)使用gtable函数放在一起 .
Minor edit: Updating to ggplot2 2.2.1
使用
ggplot2
并调整this SO answer中的代码:绘制单独的男性和女性子集以获得金字塔图: