【发布时间】:2018-10-07 12:12:24
【问题描述】:
我有一个样本数据集
d=data.frame(n=rep(c(1,1,1,1,1,1,2,2,2,3),2),group=rep(c("A","B"),each=20),stringsAsFactors = F)
我想根据组变量绘制两个单独的直方图。
我在这里的另一篇文章中尝试了@jenesaisquoi 建议的这种方法 Generating Multiple Plots in ggplot by Factor
ggplot(data=d)+geom_histogram(aes(x=n,y=..count../sum(..count..)),binwidth = 1)+facet_wrap(~group)
它成功了,但如果你仔细观察,比例是错误的。它没有计算每个组的比例,而是一个很大的比例。我希望每个组的数字 1 的比例为 0.6,而不是 0.3。
然后我尝试了 dplyr 包,它甚至没有创建两个图表。它忽略了group_by 命令。只不过这次的比例是对的。
d%>%group_by(group)%>%ggplot(data=.)+geom_histogram(aes(x=n,y=..count../sum(..count..)),binwidth = 1)
最后我尝试使用 color 进行保理
ggplot(data=d)+geom_histogram(aes(x=n,y=..count../sum(..count..),color=group),binwidth = 1)
但结果远非理想。我打算接受一个输出,但箱子并排,而不是彼此重叠。
总之,我想绘制两个独立的直方图,并在每组中计算出正确的比例。如果没有简单的方法来做到这一点,我可以使用一个图表,但将箱并排放置,并为每个组设置正确的比例。在本例中,数字 1 的比例应为 0.6。
【问题讨论】:
-
ggplot不会在group_by之后为每个组制作单独的图;如果您需要完全独立的绘图,您可以组合使用split和map。但这也将比它可能的价值更复杂。 @Luis Paulo Jorge 的回答是一个很好且直接的方法
标签: r ggplot2 dplyr histogram data-visualization