![](/img/trans.png)
[英]Equivalent to sns.distplot(data, fit=scipy.stats.norm) with plotly
[英]Changing y axis to percentage in sns.distplot with fit=stats.norm
我正在繪制一系列高斯分布,據我了解,y 軸是密度而不是概率。 有沒有辦法將其更改為百分比或概率? 我的代碼如下:
import seaborn as sns
import numpy as np
from matplotlib import pyplot as plt
from scipy.stats import norm
x = np.random.normal(size=500) * 0.1
ax = plt.figure()
sns.distplot(x, bins=15, kde =False, fit=norm, color='lightseagreen', fit_kws={"color":"lightseagreen"}, hist_kws=dict(alpha=0.7))
您可以嘗試手動定義箱,然后 plot 直方圖,這給你計數:
import seaborn as sns
import numpy as np
from matplotlib import pyplot as plt
from scipy.stats import norm
x = np.random.normal(size=500) * 0.1
fig, ax = plt.subplots()
nbins = 20
xlen = np.linspace(-0.4,0.4,nbins)
binwidth = xlen[1] - xlen[0]
sns.distplot(x, bins=xlen, kde =False, color='lightseagreen',
fit_kws={"color":"lightseagreen"}, hist_kws=dict(alpha=0.7),ax=ax)
然后擬合正態分布,使用 cdf 的差值獲得這些 bin 內的概率,然后按比例縮小 y-ticks:
mu, std = norm.fit(x)
p = np.diff(norm.cdf((xlen-mu)/std))
ax.plot(xlen[:(len(xlen)-1)]+binwidth/2,p*len(x),color='lightseagreen')
ax.set_yticklabels(ax.get_yticks()/len(x))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.