gpt4 book ai didi

r - 将 R ggplot 中直方图中的 y 轴归一化为按组比例

转载 作者:行者123 更新时间:2023-12-03 08:48:46 24 4
gpt4 key购买 nike

我的问题与 Normalizing y-axis in histograms in R ggplot to proportion 非常相似,除了我有两组不同大小的数据,我希望每个比例都是相对于它的组大小而不是总大小。

为了更清楚,假设我在一个数据框中有两组数据:

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 之间给定 bin 中的值的比例,独立于它们各自的大小。也欢迎与我原来的想法不同的想法!

谢谢!

最佳答案

像这样? [根据OP的评论编辑]


ggplot(all,aes(x=value,fill=dataset))+
geom_histogram(aes(y=0.5*..density..),
alpha=0.5,position='identity',binwidth=0.5)

使用 y=..density..缩放直方图,使每个下的面积为 1,或 sum(binwidth*y)=1.因此,您将使用 y = binwidth*..density..让 y 代表每个 bin 中总数的分数。在您的情况下, binwidth=0.5 .

IMO 这更容易解释:


ggplot(all,aes(x=value,fill=dataset))+
geom_histogram(aes(y=0.5*..density..),binwidth=0.5)+
facet_wrap(~dataset,nrow=2)

关于r - 将 R ggplot 中直方图中的 y 轴归一化为按组比例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22181132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com