绘制另一组的堆叠直方图,Y 轴为 percentage/proportion

Plot stacked histogram by another group with Y axis as percentage/proportion

我正在尝试实现具有两个主要属性的直方图,并且已经设法单独生成每个属性,但不知道如何结合这两种方法来生成我想要的东西。

我的目标是沿着 X 轴绘制年龄(以 5 年为单位)的堆叠直方图,分成两个堆叠条(Admission=1,Admission=0),显示为 proportion/percentage bin admitted/not 录取了。

数据集:

> dput(head(example_data))
structure(list(GAPS = c(26L, 16L, 21L, 15L, 17L, 13L), Age = c(62L, 
62L, 62L, 58L, 70L, 70L), Admitted = c(0L, 1L, 1L, 0L, 0L, 0L
)), row.names = c(NA, 6L), class = "data.frame")

我在 R 中工作,但数据集源自 pandas 数据框,如果 python matplotlib 等中存在更简单的解决方案,我很乐意改用它。

到目前为止,我可以使用以下代码生成每个年龄的条形图,并根据需要在 Y 轴上显示比例:

myTable<-table(dataset$Admitted, dataset$Age)
myTable
myTable2<-prop.table(myTable, 2)

barplot(myTable2)
barplot(myTable2,legend=rownames(myTable2), xlab="Age", col=c(7, 4))

我还可以通过简单地使用

轻松创建一个简单的分箱直方图
hist(dataset$Age)

我的问题是如何调整条形图方法来代替合并直方图,因为结果太忙了,包括每个年龄段的可能性。

您可以创建垃圾箱,例如每十年一次。为此,请使用 cut() 函数。

dat$age.bins <- as.numeric(as.character(cut(dat$age, breaks=(0:10)*10, labels=(1:10)*10)))
myTable3 <- with(dat, prop.table(table(adm, age.bins), 2))
barplot(myTable3, legend=rownames(myTable3), xlab="Age", col=c(7, 4))

结果

数据

set.seed(42)
dat <- data.frame(age=rnbinom(1e4, 5, mu=30),
                  adm=rbinom(1e4, 1, 2/6))