拟合曲线到直方图和提取函数形式 - Python

时间:2014-04-03 14:49:04

标签: python function histogram

如果我使用matplotlib在python中绘制直方图,我怎样才能轻松地提取直方图的功能形式,或者我认为,最佳拟合曲线的功能直方图。我不知道如何绘制这条最佳曲线。感谢任何帮助。谢谢。

我的直方图的形状就像一个倒置的lennard-jones潜力。

1 个答案:

答案 0 :(得分:3)

我只是要回答两个问题要彻底。这是两个独立的问题:将函数拟合到直方图数据,然后绘制函数。首先,scipy有一个optimization module,你可以使用它来适应你的功能。其中curve_fit可能是最简单的。

举个例子,

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

# Model function
def f(x, a, b):
    return a * x + b

# Example data
x = np.linspace(0, 10, 20)
y = f(x, 0.2, 3.4) + 0.2 * np.random.normal(size=len(x))

# Do the fit
popt, pcov = curve_fit(f, x, y, [1.0, 1.0])

curve_fit,您可以获得优化参数a, b到您的函数f和统计协方差。您还可以将统计权重的错误作为sigma传递给它。

现在您可以绘制数据和直方图。我想在曲线x中使用更高的分辨率是有意义的。

# Plot data
plt.plot(x, y, 'o')

# Plot fit curve
fit_x = np.linspace(0, 10, 200)
plt.plot(fit_x, f(fit_x, *popt))
plt.show()

我没有专门处理直方图或Lennard-Jones潜力来限制代码的复杂性,并专注于你所询问的部分。但是这个例子可以适应任何类型的最小二乘优化问题。