在条形图上拟合曲线。 [Python的]

时间:2018-04-02 14:40:13

标签: python matplotlib curve-fitting

我有一个条形图,我需要描述数据的分布。现在,我肯定我的数据遵循几何分布,但我无法在数据上拟合曲线,也无法绘制概率质量函数。

plt.bar(range(len(freq)), [val[1] for val in freq], log=True, alpha=0.75)
plt.xticks(range(len(freq)), [val[0] for val in freq])
plt.xticks(rotation=70)
plt.xlabel('Times a word appears in the collection',labelpad=1)
plt.ylabel('Number of words appearing x times')

enter image description here

如何在此数据上拟合曲线以证明我的数据遵循几何分布?

我还应该注意,我的数据是一个元组列表。

1 个答案:

答案 0 :(得分:0)

如果你替换这个例子中的数据和功能,我认为它接近你所要求的。

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit


# "x" is data, a,b,c are parameters
def func(x, a, b, c):
   return a + b*x + c*x*x # example function


xData = np.array([1,2,3,4,5,6])
yData = np.array([1,3,5,6,2,1])

# curve fit the data using curve_fit's default inital parameter estimates
fittedParameters, pcov = curve_fit(func, xData, yData)

y_fit = func(xData, *fittedParameters)

plt.bar(xData, yData) # plot the raw data as bar chart
plt.plot(xData, y_fit) # plot the equation using the fitted parameters
plt.show()

print(fittedParameters)