我有一个样本数据集
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建议的方法 使用因子生成多个ggplot图
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)
但结果远非理想。我原本想接受一个输出,但是希望直方图的柱子并排而不是重叠在一起。
![color=group output](https://istack.dev59.com/lMz3p.webp)
ggplot
在group_by
之后不会为每个组制作单独的图表;如果您需要完全分开的图表,可以尝试使用split
和map
的组合。但是这可能比它值得的要复杂一些。@Luis Paulo Jorge的答案是一个好的且直接的方法。 - camille