python 如何可视化标准分布如何拟合数据直方图(另一种分布)?[duplicate]

46scxncf  于 2023-02-21  发布在  Python
关注(0)|答案(1)|浏览(100)
    • 此问题在此处已有答案**:

How to add a standard normal pdf over a seaborn histogram(1个答案)
8小时前关门了。
我有两段代码和两张图:

import matplotlib.pyplot as plt
import numpy as np
import scipy.stats as stats
import math
import seaborn as sns

mu = 0
variance = 1
sigma = math.sqrt(variance) 
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, stats.norm.pdf(x, mu, sigma))
plt.show()

在第一段代码中,我绘制了一个给定均值和标准差的正态分布,结果如下:

然后我有另一个代码块,以便从正态分布中抽取随机样本(在我的例子中,但它可以是任何其他分布,我会回答同样的问题)。

value = np.random.normal(loc=mu ,scale=,size=1000)
sns.histplot(value)

我把它画出来就像这样

我试着在同一个单元格中编写代码,但它只显示直方图。
我的问题是:有没有可能"合并"这两个图形?我的意思是,在直方图的顶部绘制第一个代码块的标准正态分布,以便只有一个图形,并直观地比较你的直方图与标准正态分布的接近程度?

4uqofj5v

4uqofj5v1#

请尝试以下操作:

mu = 0
variance = 1
sigma = math.sqrt(variance)
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
values = np.random.normal(loc=mu, scale=sigma, size=1000)
fig, ax1 = plt.subplots()
ax1.plot(x, stats.norm.pdf(x, mu, sigma), color='blue')
ax1.set_ylabel('PDF', color='blue')
ax1.tick_params(axis='y', labelcolor='blue')
ax2 = ax1.twinx()
sns.histplot(values, ax=ax2, color='orange')
plt.show()

相关问题