绘制对数正态分布

时间:2012-08-14 17:41:34

标签: python matplotlib

我正在尝试绘制对数正态分布,因此我可以使用下面的代码将其与我的样本数据的直方图进行比较,但我的情节看起来不正确。我的代码中有什么东西我做得不对吗? C阵列的长度为17576

import matplotlib.pyplot as plt
import numpy as np

data=np.loadtxt(F)
C=data[:,3]

x = np.ma.log(C)
avg = np.mean(x)
std = np.std(x)
dist=lognorm(std,loc=avg)
plt.plot(C,dist.pdf(C),'r')
plt.show()

My Plot

1 个答案:

答案 0 :(得分:2)

您的x数据看起来不是按排序顺序排列的。试试这个

ind = np.argsort(C)
xx = C[ind]
yy = dist.pdf(C)[ind]
plt.plot(xx, yy, 'r')

Plot只是用直线连接所有(x,y)对,因此您需要确保从左右(或左右)跟踪您的函数。或者,您可以跳过图之间的界线:

plt.plot(C, dist.pdf(C), 'ro')