我如何使用python matplotlib绘制正态分布的直方图?

问题描述 投票:0回答:3

我的问题是-使用NumPy函数np.random.randn生成数据x,以100,000点为正态分布。然后绘制直方图。

我的计算是-

x = sp.norm.pdf(np.random.randn(100000))
plt.hist(x, bins = 20, facecolor='blue', alpha=0.5)

存在一些问题,因为我无法获得正态分布的直方图?

python numpy matplotlib histogram normal-distribution
3个回答
0
投票

在下一行添加plot.show()


0
投票

enter image description here

import numpy as np
import matplotlib.pyplot as plt

x = np.random.randn(100_000)
plt.hist(x, bins=20, facecolor="blue", alpha=0.5)

plt.show()

0
投票

要从标准正态分布中获得N个随机样本,可以使用np.random.randn(N)或scipy的stats.norm.rvs(size=N)。然后可以使用这些样本创建直方图。

绘制曲线,可以使用stats.norm.pdf(y),其中y是后续x值的数组。将此pdf进行归一化,即曲线下的面积为1。直方图的高度与样本数乘以分格宽度成正比。

stats.norm.pdf(np.random.randn(N))的结果将是N个随机样本的概率列表。

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

N = 100000
# x = np.random.randn(N)
x = stats.norm.rvs(size=N)
num_bins = 20
plt.hist(x, bins=num_bins, facecolor='blue', alpha=0.5)

y = np.linspace(-4, 4, 1000)
bin_width = (x.max() - x.min()) / num_bins
plt.plot(y, stats.norm.pdf(y) * N * bin_width)

plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.