我有三组学生,由一个名为ExperimentCohort
的因素进行区分。对于每个学生,我都有一个名为LetterGrade
的因素。我想为每个ExperimentCohort
绘制一个类似直方图的条形图,其中包括LetterGrade
的数据。使用以下代码:
ggplot(df, alpha = 0.2,
aes(x = LetterGrade, group = ExperimentCohort, fill = ExperimentCohort))
+ geom_bar(position = "dodge")
这个方案已经很接近了,但是三个 ExperimentCohorts
的学生人数不一样。为了更公平地比较它们,我希望将 y 轴设置为每个等级字母的组内比例。到目前为止,除了在绘图之前计算这个比例并将其放入单独的数据框中之外,我没有找到其他方法来实现这一点。
在 SO 和其他地方寻求类似问题的解决方案时,每个解决方案都涉及 aes(y = ..count../sum(..count..))
,但是 sum(..count..) 是在整个数据框中执行而不是在每个队列中执行。有人有建议吗?以下是创建示例数据框的代码:
df <- data.frame(ID = 1:60,
LetterGrade = sample(c("A", "B", "C", "D", "E", "F"), 60, replace = T),
ExperimentCohort = sample(c("One", "Two", "Three"), 60, replace = T))
感谢您的选择。