我面临着近似多项式拟合的问题。此处显示了对我的问题的更详细评论。基本上我想平滑我通过长时间数学运算得到的多项式的中间部分,如下所示。
我得到的想法是从多项式的开头和结尾取一个范围(它的点),并制作一个在中间部分没有波动的近似多项式;选定的点如下所示。
然而,通过使用该polyfit函数,我并没有得到我所希望的多项式。

这是我的代码的关键部分:
from sympy import*
import numpy as np
init_printing()
%matplotlib inline
import matplotlib.pyplot as plt
S = np.linspace(25, 400, 1000)
SS = np.log10(S)
def f(logS): # the polynomial that I got
return 10**(-57.2476193068601*logS**5 + 585.900632193053*logS**4 - 2384.35277925916*logS**3 + 4821.25582425353*logS**2 - 4845.47249368281*logS + 1943.75303313331)
xdata = f(SS)
ydata = S
plt.figure(figsize=(12, 10), dpi= 600, facecolor='w', edgecolor='k')
plt.loglog(xdata, ydata,'k-')
# Data for new polynomial (approximation)
XX = xdata[:40].tolist()
X1 = xdata[len(xdata)-350:].tolist()
YY = ydata[:40].tolist()
Y1 …Run Code Online (Sandbox Code Playgroud) 这是我的代码:
column1 = ['Measured Set', '1. set', '2. set', '3. set']
column2= ['Breached parameter (number of breaches, %)' ]
column3 = ['Breached parameter (number of breaches, %)']
for j in range(NOT):
column2.append(report_str[0][j])
column3.append(report_str[1][j])
data = {
'Sensor': column1,
'Sensor 1': column2,
'Sensor 2': column3,
}
df = pd.DataFrame(data)
df
Run Code Online (Sandbox Code Playgroud)
report_str 是一个列表,填充了字符串,我将某些字符串复制到表中.
我尝试使用此代码保存表:
ax = df.plot()
fig = ax.get_figure()
fig.savefig('asdf.png')
Run Code Online (Sandbox Code Playgroud)
但是我得到一个错误:"空'DataFrame':没有要绘制的数字数据".
任何人都可以帮我解决这个问题吗?