matplotlib 用python平滑线条的路径

sy5wg1nm  于 2023-06-30  发布在  Python
关注(0)|答案(2)|浏览(124)

我有一组点,它们一起创造了一个轨道,其中的顺序是至关重要的。我可以用线绘制轨迹,如何在获取新点之后或同时平滑它?轨道可能看起来像1 pic:
图片一

图片二

图片三

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

ie3xauqp

ie3xauqp1#

这听起来像一个不同的插值方法或方法可能会得到你想要的。三次样条曲线将得到顶点处具有曲线的直线,如scipy库和此循环点示例集所使用的:

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()

原来的直线看起来像这样:

t40tm48m

t40tm48m2#

我正面临着同样的问题,以铺平道路,shapelysmooth package为我做的伎俩。
在我的例子中,最好的输出是使用Chaikins-Algorithm,因为我只是想删除路径的一些角落。
在问题情况下(保留角),Catmull-Rom样条可能是更好的选择。

相关问题