我有一个数字(浮点数)的数组。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
mean=np.mean(array1)
sigma=np.std(array1)
plt.plot(array1,mlab.normpdf(array1,mean,sigma))
plt.show()
我得到的是以下内容:
有没有办法让分发顺畅?
答案 0 :(得分:1)
我尝试使用以下代码重现您的数组。 a
是你的数组。
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.mlab as mlab
a = np.random.randn(500)*5
plt.plot(a, mlab.normpdf(a, np.mean(a), np.std(a)))
plt.show()
导致这种可憎的行为:
一种解决方案是对数据阵列进行排序。 n
是基于a
的正态概率密度函数。 np.argsort
会返回a
的索引,您可以使用该索引对a
和n
进行排序。
n = mlab.normpdf(a, np.mean(a), np.std(a))
ind = np.argsort(a)
a = a[ind]
n = n[ind]
plt.plot(a,n)
plt.show()
当然 - 这不是真正意义上的smoothing。但我认为这可以解决你的问题。你也可以用标记而不是线来做一个情节:
plt.plot(a, mlab.normpdf(a, np.mean(a), np.std(a)), 'o')
这也将导致更实用的'曲线图。