Scipy 使图形更平滑
Scipy to make the graph smoother
我尝试使用 scipy 使图表更平滑,但结果是一条水平线。
代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
dd = [1.0, 0.7071067811865476, 0.5, 0.3535533905932738, 0.25, 0.1767766952966369]
y = range(0,6)
dd1 = np.array(dd)
y1 = np.array(y)
xsmooth = np.linspace (dd1.max(),dd1.min(),5)
ysmooth = spline (dd1,y1,xsmooth)
plt.plot(xsmooth ,ysmooth)
plt.show()
提前致谢
我认为您可能在代码中混淆了 x 和 y。
如果 dd 是您的 y 值并且 y 是您的 x 值,您可以像这样执行样条插值:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
y = [1.0, 0.7071067811865476, 0.5, 0.3535533905932738, 0.25, 0.1767766952966369]
x = range(0,6)
y = np.array(y)
x = np.array(x)
xsmooth = np.linspace (x.min(),x.max(),20) # an x vector with more intermediate values
ysmooth = spline(x,y,xsmooth)
plt.plot(xsmooth ,ysmooth)
plt.plot(x,y,'o')
plt.show()
我尝试使用 scipy 使图表更平滑,但结果是一条水平线。
代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
dd = [1.0, 0.7071067811865476, 0.5, 0.3535533905932738, 0.25, 0.1767766952966369]
y = range(0,6)
dd1 = np.array(dd)
y1 = np.array(y)
xsmooth = np.linspace (dd1.max(),dd1.min(),5)
ysmooth = spline (dd1,y1,xsmooth)
plt.plot(xsmooth ,ysmooth)
plt.show()
提前致谢
我认为您可能在代码中混淆了 x 和 y。 如果 dd 是您的 y 值并且 y 是您的 x 值,您可以像这样执行样条插值:
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import spline
y = [1.0, 0.7071067811865476, 0.5, 0.3535533905932738, 0.25, 0.1767766952966369]
x = range(0,6)
y = np.array(y)
x = np.array(x)
xsmooth = np.linspace (x.min(),x.max(),20) # an x vector with more intermediate values
ysmooth = spline(x,y,xsmooth)
plt.plot(xsmooth ,ysmooth)
plt.plot(x,y,'o')
plt.show()