我有一组要点,它们共同构成了一个轨道,在该轨道上至关重要。我可以使用线来绘制轨迹,如何在获取新点之后或期间进行平滑处理?曲目可能看起来像1张照片:

图片一python - 用python平滑线的路径-LMLPHP

图二python - 用python平滑线的路径-LMLPHP

图片三python - 用python平滑线的路径-LMLPHP

2图片是我最后想要的。我尝试用scipy.interpolate进行插值,但没有用,因为它需要排序的序列(最后我只实现了pic3)

最佳答案

听起来不同的插值方法或方法可能会得到您想要的。三次样条曲线可以使您在顶点处具有曲线的直线,如scipy libary和以下示例的循环点所利用:

import matplotlib.pyplot as plt
import numpy as np
from scipy import interpolate

arr = np.array([[0,0],[2,.5],[2.5, 1.25],[2.6,2.8],[1.3,1.1]])
x, y = zip(*arr)
#in this specific instance, append an endpoint to the starting point to create a closed shape
x = np.r_[x, x[0]]
y = np.r_[y, y[0]]
#create spline function
f, u = interpolate.splprep([x, y], s=0, per=True)
#create interpolated lists of points
xint, yint = interpolate.splev(np.linspace(0, 1, 100), f)
plt.scatter(x, y)
plt.plot(xint, yint)
plt.show()


python - 用python平滑线的路径-LMLPHP

原始直线如下所示:

python - 用python平滑线的路径-LMLPHP

关于python - 用python平滑线的路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53328619/

10-12 22:23