如何解决如何重新缩放 4 高斯以使它们总和为 1?
我正在用 ggplot2 生成这个图,这里每个高斯总和为 1,但我希望所有 4 个总和为 1,以便 y 轴上的密度应除以 4。有人知道怎么做吗?这里我使用我的“数据”的代码是一个表,其中包含 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
解决方法
根据 df = pd.DataFrame(
{
"name": [
"Random Name","Another Name",None,None
],"add": [
None,"Pre text",'something',None
]
}
)
m1 = df['add'].notna()
m2 = df['name'].notna()
s1 = df['add'].fillna('') + ' ' + df['name'].fillna('')
s2 = df['add'].fillna(df['name'])
df['add_name'] = np.select([m1 & m2,m1 & ~m2,~m1 & m2],[s1,df['add'],df['name']],default=None)
print (df)
name add add_name
0 Random Name None Random Name
1 Another Name Pre text Pre text Another Name
2 None something something
3 None None None
计算变量部分,?geom_density
变量是密度 * 观察数(对于该组)。因此,如果我们将 count
变量除以它们的总和(所有组之间的总观察值),我们应该得到比例密度。
count
由 numpy.select
(v1.0.0) 于 2021 年 4 月 14 日创建
请注意,如果您希望将密度除以密度数量,则可以使用 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))))
(因为每个密度总和为 1)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。