我可以先绘制正态分布而不先绘制直方图吗?

时间:2018-09-22 14:23:42

标签: python matplotlib

正态概率分布是在x轴上绘制b / w x,在y轴上绘制f(x)的图。但是当我绘制它时,我得到的曲线重叠。我在本网站上阅读了有关正态分布的不同答案。他们首先绘制直方图,然后绘制(x,f)。必须先绘制直方图吗?我可以在没有直方图的情况下做到吗?

`mu, sigma = 0, 0.1
x = np.random.normal(mu, sigma, 200)
print(x)

f = 1/(sigma * np.sqrt(2 * np.pi)) *np.exp( - (x - mu)**2 / (2 * sigma**2) )
print(f)
plt.plot(x,f)`

enter image description here

2 个答案:

答案 0 :(得分:0)

首先简单地对x数据进行排序。要强调的是,如果仅使用标记进行绘图,则会看到重叠的部分是连续连接离散数据点的线的伪造物。 ms=2markersize=2的简短写法,它指定标记的大小(在这种情况下为点,圆)。在ko中,k是黑色的代码,o是使用标记的符号。您也可以写'o', color='black'作为替代。 -ko表示用黑线连接圆点。 -go-bo-ro分别表示绿色,蓝色和红色。

mu, sigma = 0, 0.1
x = np.random.normal(mu, sigma, 200)
f = 1/(sigma * np.sqrt(2 * np.pi)) *np.exp( - (x - mu)**2 / (2 * sigma**2) )

plt.plot(x,f, 'ko', ms = 2)

输出

enter image description here

要纠正这一点,可以在计算f和绘图时使用排序的x。

f = 1/(sigma * np.sqrt(2 * np.pi)) *np.exp( - (np.sort(x) - mu)**2 / (2 * sigma**2) )
plt.plot(np.sort(x),f, '-ko', ms = 2)

输出

enter image description here

答案 1 :(得分:0)

您无需绘制样本即可绘制正态分布。如果只使用均匀间隔的数字序列会更好。

mu, sigma = 0, 0.1
x = np.linspace(-0.4, 0.4, 100)
f = 1/(sigma * np.sqrt(2 * np.pi)) *np.exp( - (x - mu)**2 / (2 * sigma**2) )
plt.plot(x, f)

enter image description here