python - 在 matplotlib 中平滑正态/高斯图

标签 python matplotlib gaussian normal-distribution

我有一个 numpy 数字数组( float )。

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()

我得到的是以下内容:enter image description here

有没有办法平滑分布?

最佳答案

我尝试使用以下代码重现您的数组。 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()

这导致了这种令人厌恶的事情: Bad example

一种解决方案是仅对数据数组进行排序。 n 是基于a 的正态概率密度函数。 np.argsort 返回 a 的索引,您可以使用它对 an 进行排序。

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()

Better Plot.

这当然不是 smoothing真正意义上的。但我认为这可以解决你的问题。您也可以只使用标记而不是线条绘制绘图:

plt.plot(a, mlab.normpdf(a, np.mean(a), np.std(a)), 'o')

这也将导致更加“实用”的情节。

关于python - 在 matplotlib 中平滑正态/高斯图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27712776/

相关文章:

Python绘图强制按字母顺序而不是按时间顺序对日期进行排序

python - Matplotlib 空白图(应该有子图)

python - 使用拉普拉斯算子检测图像中的圆圈

python - 如何保存和加载高斯过程进行生产

gaussian - PCL 高斯核示例

python - 如何在 OpenCV 中将 numpy ndarray 作为颜色传递?

Python Flask 不支持的操作 : not writable

python - 创建 matplotlib 图时,第一行 Fig,ax=plt.subplots() 的相关性是什么?

python - python Popen中的大括号

python - 如何让 WTForms 从数据存储中读取?