R 在geom_直方图中添加标签,标签上显示每个箱子或列的百分比

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中)。 我有两组,我画了直方图

例如:

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%等
  • 等等
如果您想使用mtcars,请捕获以下示例代码:

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”
获得相同的绘图。然而,据我所知,要正确地贴上标签需要一些手工工作。