如何重新缩放 4 个高斯分布以使它们总和为 1?
How to rescale 4 gaussian in order to make them sum to 1?
我正在用 ggplot2 制作这个图,这里每个高斯总和为 1,但我希望所有 4 个总和为 1,这样 y 轴上的密度应该除以 4。有人知道该怎么做吗?在这里,我使用我的“数据”的代码是 table 具有 1 列距离和 1 列具有相对集群。
p5 <- ggplot(data,aes(x=distances, fill=cluster)) +
geom_density(alpha=0.25,adjust=4)+
scale_fill_manual(values = c("seagreen2","darkseagreen2","palegreen4","palegreen1"))+
xlab("distance (nm)")+theme_bw()
p5
根据 ?geom_density
计算变量部分,count
变量是密度 * 观察数(对于该组)。因此,如果我们将 count
变量除以它们的总和(所有组之间的总观察值),我们应该得到比例密度。
library(ggplot2)
df <- rbind(
iris[1:75, ], # 50 setosa + 25 vericolor
iris[101:111, ] # 10 virginica
)
ggplot(df, aes(Sepal.Width, fill = Species)) +
geom_density(aes(y = after_stat(count / sum(count))))
由 reprex package (v1.0.0)
于 2021-04-14 创建
请注意,如果你想将密度除以密度的数量,你可以使用 after_stat(density / sum(density)))
(因为每个密度总和为 1)。
我正在用 ggplot2 制作这个图,这里每个高斯总和为 1,但我希望所有 4 个总和为 1,这样 y 轴上的密度应该除以 4。有人知道该怎么做吗?在这里,我使用我的“数据”的代码是 table 具有 1 列距离和 1 列具有相对集群。
p5 <- ggplot(data,aes(x=distances, fill=cluster)) +
geom_density(alpha=0.25,adjust=4)+
scale_fill_manual(values = c("seagreen2","darkseagreen2","palegreen4","palegreen1"))+
xlab("distance (nm)")+theme_bw()
p5
根据 ?geom_density
计算变量部分,count
变量是密度 * 观察数(对于该组)。因此,如果我们将 count
变量除以它们的总和(所有组之间的总观察值),我们应该得到比例密度。
library(ggplot2)
df <- rbind(
iris[1:75, ], # 50 setosa + 25 vericolor
iris[101:111, ] # 10 virginica
)
ggplot(df, aes(Sepal.Width, fill = Species)) +
geom_density(aes(y = after_stat(count / sum(count))))
由 reprex package (v1.0.0)
于 2021-04-14 创建请注意,如果你想将密度除以密度的数量,你可以使用 after_stat(density / sum(density)))
(因为每个密度总和为 1)。