擅长:python、mysql、java
<p>当然它不会绘制任何东西,<code>curve_fit</code>不会绘制。</p>
<p>在文档中,<code>curve_fit</code>的返回值是一个带有估计参数的数组和一个带有估计协方差矩阵的2d数组。您必须自己绘制带有估计参数的拟合函数。</p>
<p>我也建议用<code>a*sin(bx +c) +d</code>来拟合,因为b和c是不相关的。</p>
<p>这是有效的:</p>
<pre><code>import matplotlib.pyplot as plt
import numpy as np
from numpy.random import normal
from scipy.optimize import curve_fit
x_data = np.linspace(0, 2*np.pi, 30)
y_data = np.sin(x_data) + normal(0, 0.2, 30)
def func(x, a, b, c, d):
return a * np.sin(b*x + c) + d
parameter, covariance_matrix = curve_fit(func, x_data, y_data)
x = np.linspace(min(x_data), max(x_data), 1000)
plt.plot(x_data, y_data, 'rx', label='data')
plt.plot(x, func(x, *parameter), 'b-', label='fit') # the star is to unpack the parameter array
plt.show()
</code></pre>
<p>结果是:</p>
<p><img src="https://i.stack.imgur.com/0e8Fp.png" alt="plot result"/></p>