R 在geom_直方图中添加标签,标签上显示每个箱子或列的百分比
我的问题是显示带有组的直方图列百分比(在ggplot中)。 我有两组,我画了直方图 例如:R 在geom_直方图中添加标签,标签上显示每个箱子或列的百分比,r,ggplot2,R,Ggplot2,我的问题是显示带有组的直方图列百分比(在ggplot中)。 我有两组,我画了直方图 例如: ggplot(data, aes(x = variable)) + geom_histogram(aes(group = grp, fill = grp, y=(..count../sum(..count..))), col = NA, alpha = 0.35) + stat_bin(aes(y=(..count../sum(..count..)), label=(..count../s
ggplot(data, aes(x = variable)) +
geom_histogram(aes(group = grp, fill = grp, y=(..count../sum(..count..))), col = NA, alpha = 0.35) +
stat_bin(aes(y=(..count../sum(..count..)), label=(..count../sum(..count..)), group=grp), geom="text",position=position_stack(vjust=0.5))
当我在上面运行时,我得到了总百分比label=(…count../sum(…count..))
但我希望看到直方图列(bin)中的百分比,它在任何bin中的总和为100%
例如:
- Bin1:20%;80%
- Bin2:30%;70%等
- 等等
ggplot(mtcars, aes(x = qsec)) +
geom_histogram(aes(group = am, fill = am, y=(..count../sum(..count..))), col = NA, alpha = 0.35) +
stat_bin(aes(y=(..count../sum(..count..)), label=(..count../sum(..count..)), group=am), geom="text",position=position_stack(vjust=0.5))
你知道吗?也许这就是你要找的。我的方法使用了一个辅助函数和一些
dplyr
来计算每组每箱的比例:
库(ggplot2)
图书馆(dplyr)
f%
加上计数(x,wt=count)%>%
(x,组)%>%
变异(prop=count/n)%>%
拉(撑)
}
ggplot(mtcars,aes(x=qsec))+
几何直方图(
aes(
组=系数(am),填充=系数(am),
y=f(…x…,计数…,组…)
),
col=NA,alpha=0.35,binwidth=1
) +
统计局(
aes(
y=f(…x…,计数…,分组…),
标签=刻度::百分比(f(…x…,…计数…,…组…),精度=1),组=am
),
binwidth=1,geom=“text”,position=position\u堆栈(vjust=0.5)
)
请分享一点样本数据,使这个问题重现
dput()
最适合共享数据,因为它是可复制/粘贴的,例如前10行的dput(data[1:10,])
。请选择一个很好的子集来说明问题。我提供了数据示例切换。计数../sum(…计数..)
到。密度..
似乎更接近,但我感到困惑,因为它似乎并不总是您想要的…谢谢!。它很好用。我希望ggplot2本身能够满足您使用position=“fill”
获得相同的绘图。然而,据我所知,要正确地贴上标签需要一些手工工作。