【问题标题】:Plot stacked histogram by another group with Y axis as percentage/proportion绘制另一组的堆叠直方图,Y 轴为百分比/比例
【发布时间】:2020-03-19 09:03:09
【问题描述】:

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

我的目标是沿 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)

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

【问题讨论】:

  • 您需要提供数据,请将dput(dataset) 的输出添加为您的问题的编辑。
  • 这是一个非常大的数据集,该函数无法显示,是否可以包含 head(dataset) 代替?
  • 是的,但dput 很重要,你可以使用dput(head(dataset))。不过,您可以制作一个较小的示例,无需提供所有数据。阅读:stackoverflow.com/questions/5963269/…
  • 好的,我已经修改了数据集,所以重要的变量都包含在 dput(head(dataset)) 中,希望对您有所帮助

标签: r matplotlib histogram


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    相关资源
    最近更新 更多