我的问题非常类似于在 R ggplot 中将直方图的 y 轴归一化为比例,不同的是我有两组大小不同的数据,并且我希望每个比例相对于其组大小而不是总大小。
为了更清楚地说明,假设我在一个数据框中有两组数据:
dataA<-rnorm(100,3,sd=2)
dataB<-rnorm(400,5,sd=3)
all<-data.frame(dataset=c(rep('A',length(dataA)),rep('B',length(dataB))),value=c(dataA,dataB))
我可以用以下代码同时绘制这两个分布:
ggplot(all,aes(x=value,fill=dataset))+geom_histogram(alpha=0.5,position='identity',binwidth=0.5)
而不是在Y轴上显示频率,我可以使用比例:
ggplot(all,aes(x=value,fill=dataset))+geom_histogram(aes(y=..count../sum(..count..)),alpha=0.5,position='identity',binwidth=0.5)
但是这只是相对于总数据大小(这里有500个数据点)的比例:是否可以将其相对于每个组的大小呢?
我的目标是使得在A和B之间的一个给定区间内的数值比例可以在视觉上进行比较,而不受它们各自大小的影响。欢迎提出与我的原始想法不同的想法!
谢谢!
y=..count../sum(..count..)
版本了。显然,使用..count../sum(..count..)
会将每个计数除以总计数,而在..density..
的情况下,它则应用于每个组别独立地:我仍然不明白为什么,如果你有任何想法,请告诉我。 - Erwan