我的例子:我正在尝试创建一个图表,用于捕获传入GPA的类通过率如何变化。理想情况下,这将是直方图形式,我可以快速编辑binwidth,以查看GPA不同容器的通过率如何变化,并且可以包含每个bin中密度的信息。在模拟数据中,有200个观测值,每个观测值都有GPA和通过值(0,1)。
set.seed(435)
GPA <- round(rnorm(n = 200, mean = 3.2, sd = .7), 2)
Pass <- rep(c(0, 1), 100)
data <- as.data.frame(cbind(GPA, Pass))
我认为我正在寻找的图表是以下两个选项的组合:
选项1:
ggplot(data, aes(x = GPA, fill = factor(Pass))) +
geom_histogram(position = "fill", binwidth = .2, aes(y = ..count..)) +
scale_fill_manual(name = "Class Outcome",
labels = c("Did not Pass", "Passed"), values = c("#FFFFFF", "#333999")) +
labs(title = "Pass Rate by Incoming GPA", x = "Incoming GPA", y = "Proportion Passed")
在这个选项中,我可以看到在每个GPA区域通过的学生比例(使用白色来删除未通过的比例),但我没有任何关于每个学生中有多少学生的信息。箱中。
选项2:
ggplot(data, aes(x = GPA, fill = ..count.., group = factor(Pass))) +
geom_histogram(position = "fill", binwidth = .2, aes(y = ..count..),
color = "white", size = 1) +
scale_fill_gradient(name = "Number of Students",
low = "#99CCFF", high = "#000099") +
labs(title = "Pass Rate by Incoming GPA", x = "Incoming GPA", y = "Proportion Passed")
在这张图中,我可以得到比例梯度和比例,以包含每个箱内学生人数的信息,但是你无法区分通过和未通过的人之间的差异;他们都充满了相同的梯度。着色条以尝试按组区分并没有帮助。
有没有办法将scale_fill_gradient
分组以应用于不同级别的因子,以便我可以使用不同的渐变来区分传递和未传递的比例?或者在某个地方有解决方法吗?
答案 0 :(得分:0)
这是一个(可能是次优的)解决方法。如果我们有关于通过(p)的学生数量(n)和比例的信息,我们也有关于数量((n / p)*(1-p))和未通过的学生比例的信息(1-p) 。也许显示两者有点多余。也许它不是,但这是我的理由&#34;隐藏&#34;一套酒吧。
为什么不通过控制alpha
来移除顶部栏?我们可以使用scale_alpha_manual
删除顶部栏并隐藏图例中的显示。
ggplot(data, aes(x = GPA, fill = ..count.., group = factor(Pass), alpha = factor(Pass))) +
geom_histogram(position = "fill", binwidth = .2, aes(y = ..count..),
color = "white", size = 1) +
scale_fill_gradient(name = "Number of Students",
low = "#99CCFF", high = "#000099") +
labs(title = "Pass Rate by Incoming GPA", x = "Incoming GPA", y = "Proportion Passed") +
scale_alpha_manual(values = c('0' = 0, '1' = 1),
guide = FALSE)
结束说明我希望这是一个评论,但我无法简明扼要地表达。