0

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

我的情节

4

1 回答 1

3

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

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

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

plt.plot(C, dist.pdf(C), 'ro')
于 2012-08-14T18:53:08.693 回答