在散点上叠加红色曲线

时间:2016-11-12 10:54:37

标签: python matplotlib curve-fitting

我想绘制对数正态分布,给定随机数量的输入作为蓝色散点,然后我必须在它们上面叠加红色曲线。我已经设法完成了第一项任务,但是在做超级气势的部分时,我的区域充满了颜色:

这是我在生成x和y

之后在我的代码中尝试过的
plt.figure()
plt.plot(x,y,'bo')
plt.plot(x,y,'-bx')
plt.ylabel('Log normal distribution function values for y')
plt.xlabel('X, the generated random points from 0-10')
plt.show()

其中x和y以这种方式生成:

for i in range(0,10000):
    x[i] = 10*random.random()
    y[i]= (1/(x[i]*sigma*math.sqrt(2*math.pi))) * math.exp(-(((math.log(x[i])- mew))**2)/(2*((sigma)**2)))

1 个答案:

答案 0 :(得分:2)

首先,与问题的要点无关,你真的应该避免使用循环来做这样的事情。相反,尝试类似下面的内容

sigma = 2
mew = 3
x = 10*random.random(100)
y= (1/(x*sigma*math.sqrt(2*math.pi))) * np.exp(-(((np.log(x)- mew))**2)/(2*((sigma)**2)))

(将sigmamew和100更改为您喜欢的任何内容。)

(哦,另外一件事:除非你是猫,否则你可能意味着mu,而不是mew。)

现在,你可以做到

plt.figure()
plt.scatter(x,y)
hold(True)
plt.plot(x[np.argsort(x)], y[np.argsort(x)], 'r-')
plt.ylabel('Log normal distribution function values for y')
plt.xlabel('X, the generated random points from 0-10')
hold(False)

(请注意,对于plot,您应该对xy进行排序。)

这就是这样的:

enter image description here