我正在尝试实现具有两个主要属性的直方图,并且设法分别生成每个直方图,但是不知道如何结合这两种方法来生成所需的结果。
我的目标是沿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))
我还可以通过简单地使用
来轻松创建简单的合并直方图hist(dataset$Age)
我的问题是我该如何修改barplot方法以代替合并直方图,因为结果太忙了,包括各种年龄的可能性。
答案 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))
set.seed(42)
dat <- data.frame(age=rnbinom(1e4, 5, mu=30),
adm=rbinom(1e4, 1, 2/6))