绘制另一组的堆叠直方图,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))
我正在尝试实现具有两个主要属性的直方图,并且已经设法单独生成每个属性,但不知道如何结合这两种方法来生成我想要的东西。
我的目标是沿着 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))