用另一组以Y轴表示百分比/比例的堆叠直方图

时间:2019-11-23 14:29:16

标签: r matplotlib histogram

我正在尝试实现具有两个主要属性的直方图,并且设法分别生成每个直方图,但是不知道如何结合这两种方法来生成所需的结果。

我的目标是沿X轴绘制年龄(以5年为单位的区域)的堆叠直方图,分为两个堆叠的条形(入场= 1,入场= 0),显示为入场/不入场的比例/百分比承认。

数据集:

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

bar_proportions 我还可以通过简单地使用

来轻松创建简单的合并直方图
hist(dataset$Age)

我的问题是我该如何修改barplot方法以代替合并直方图,因为结果太忙了,包括各种年龄的可能性。

1 个答案:

答案 0 :(得分:0)

您可以创建垃圾箱,例如每十年。为此,请使用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))

结果

enter image description here

数据

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