所以我做了一个代码来比较一些使用matplotlib和scypy的分布拟合。那就是代码:
listvar = [sessioninterval, playtime, sessiontime, pausetime]
listnames1 = ["Sessioninterval", "Playtime", "Sessiontime", "Pausetime"]
expfit= []
normfit = []
lognormfit = []
for p in listvar:
expfit.append( stats.expon.fit(p, floc = 0))
normfit.append(stats.norm.fit(p))
lognormfit.append(stats.lognorm.fit(p))
for q in range(4):
plt.hist(listvar[q], bins = len(listvar[q]), normed = True, cumulative = True, histtype = "step", color = "black", label = "EDF")
plt.plot(listvar[q],stats.expon.cdf(listvar[q],*expfit[q]) , color = 'blue',label = "Exponencial Fit: " + str(expfit[q]))
plt.plot(listvar[q],stats.norm.cdf(listvar[q], *normfit[q]), '-',color = 'red', label = "Normal Fit: "+ str(normfit[q]))
plt.plot(listvar[q],stats.lognorm.cdf(listvar[q], *lognormfit[q]), '-',color = 'green', label = "Log-Normal Fit: " + str(lognormfit[q]) )
plt.title("Probability Fit: " + str(listnames1[q]))
plt.xlabel("Value")
plt.ylabel("Probability")
plt.xlim(min(listvar[q]), max(listvar[q]))
plt.ylim(0,1)
plt.legend( bbox_to_anchor = (1.05,-0.1), fontsize = 10)
plt.gcf().subplots_adjust(bottom=0.24)
plt.savefig("Probability_" + listnames1[q] +".png")
plt.clf()
这是结果的一个例子
为什么会这样?谢谢!
答案 0 :(得分:0)
Matplot要求在绘图之前对点进行整理。
您所看到的是它正在连接未分类的点。它没有多次绘图。