我希望通过使用SciPy的一维曲线的B-spline表示来平滑下面显示的散点图。 数据在此处可用:这里。
我使用的代码是:
import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate
data = np.genfromtxt("spline_data.dat", delimiter = '\t')
x = 1000 / data[:, 0]
y = data[:, 1]
x_int = np.linspace(x[0], x[-1], 100)
tck = interpolate.splrep(x, y, k = 3, s = 1)
y_int = interpolate.splev(x_int, tck, der = 0)
fig = plt.figure(figsize = (5.15,5.15))
plt.subplot(111)
plt.plot(x, y, marker = 'o', linestyle='')
plt.plot(x_int, y_int, linestyle = '-', linewidth = 0.75, color='k')
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
我尝试改变样条和平滑条件的顺序,但是图形仍不够流畅。
B样条插值应该能够平滑数据,但是出了什么问题?是否有其他方法可以平滑这些数据?