我正在尝试绘制对数正态分布,因此我可以使用下面的代码将其与我的样本数据的直方图进行比较,但我的情节看起来不正确。我的代码中有什么东西我做得不对吗? 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()
答案 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')