【发布时间】:2017-05-09 11:31:37
【问题描述】:
我正在尝试使用 python3 绘制泊松分布,但我在正确拟合数据集时遇到了问题。 我现在拥有的功能是:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy.misc import factorial
#where valor is like [1,2,4,4,4,5,6,2,5,5,7,4,7,3,2,5,7,9,4,44,33,1,3,43,54,22,12,3,24,34,55,33]
data = valor
entries, bin_edges, patches = plt.hist(data, bins=len(data), alpha=0.6, color='g', edgecolor='black', linewidth=1.2)
bin_middles = 0.5*(bin_edges[1:] + bin_edges[:-1])
def poisson(k, lamb):
return (lamb**k/factorial(k)) * np.exp(-lamb)
parameters, cov_matrix = curve_fit(poisson, bin_middles, entries)
x_plot = np.linspace(0, len(data), 1000)
plt.plot(x_plot, poisson(x_plot, *parameters), 'r-', lw=2)
plt.show()
其中 valor 是用户发送的可变数据集。
通过这个我尝试绘制泊松分布,使用另一个绘图软件我得到这个result
但绘图输出为this。 如您所见,泊松线不像第一个那样适合。 *两个数据集使用相同的数据模式。
【问题讨论】:
-
嗨,欢迎来到 SO!为了使示例完整,您应该定义/导入
factorial和curve_fit。没有它们,它就无法运行。 调整线条大小是什么意思? -
哦,我忘记了,我生成的图太小了,当我使用 arena 绘制这个数据集时,绘图线停留在直方图的“中间”。现在我不知道为什么我画错了。我在统计方面很迷茫。
-
您能否在edit 您的帖子中包含缺失的内容?使用的特定功能实际上可能是问题的原因。由于我仍然不太明白这个问题,如果您可以展示一个示例或您期望的结果的草图可能会有所帮助。
-
我认为合身可能很好。直方图条的高度与您的泊松概率分布不匹配,因为直方图显示的是计数,而不是概率。
标签: python matplotlib scipy