scipy.stats.norm
提供了一个方便的方式来访问具有已知参数的正态分布的概率密度函数;默认情况下,它对应于标准正态分布,mu=0
,sigma=1
。
- 无论数据均值在哪里(例如
mu=0
或mu=10
),此答案都适用。
- 在
python 3.8.11
,matplotlib 3.4.2
和seaborn 0.11.2
中测试通过
- 这个问题和答案是针对轴级别图表的;对于图形级别的图表,请参见如何在seaborn displot上绘制正态曲线
导入和数据
import numpy as np
import seaborn as sns
from scipy import stats
import matplotlib.pyplot as plt
np.random.seed(365)
x = np.random.standard_normal(1000)
ax = sns.histplot(x, kde=False, stat='density', label='samples')
x0, x1 = ax.get_xlim()
x_pdf = np.linspace(x0, x1, 100)
y_pdf = scipy.stats.norm.pdf(x_pdf)
ax.plot(x_pdf, y_pdf, 'r', lw=2, label='pdf')
ax.legend()
![enter image description here](https://istack.dev59.com/gtDPb.webp)
ax = sns.distplot(x, kde = False, norm_hist=True, hist_kws={'ec': 'k'}, label='samples')
x0, x1 = ax.get_xlim()
x_pdf = np.linspace(x0, x1, 100)
y_pdf = scipy.stats.norm.pdf(x_pdf)
ax.plot(x_pdf, y_pdf, 'r', lw=2, label='pdf')
ax.legend()
![enter image description here](https://istack.dev59.com/skXtZ.webp)