Skip to main content
 首页 » 编程设计

python之如何按顺序给定笔划的一些坐标(x,y)来平滑笔划

2025年05月04日11tuyile006

我目前正在做一个项目,我需要创建一个笔画的图像,在给定笔画的一些有序坐标的情况下进行平滑处理。 假设我有一些点

import numpy as np 
X = np.array([1, 3, 6, 8, 5]) 
Y = np.array([1, 8, 4, 4, 1]) 
plt.plot(X, Y) 

但我想要的是制作一个平滑的点集合来绘制这个(这只是一张手绘图,我想你明白了):

我看过this仅适用于函数的问题(一个 x 将只输出一个 y)。但是我需要一个关系样条(不是函数)。 提前谢谢你。

请您参考如下方法:

您可以使用 scipy.interpolate 中的 B 样条(splprep 和 splev):

import numpy as np 
from scipy.interpolate import splprep, splev 
import matplotlib.pyplot as plt 
 
X = np.array([1, 3, 6, 8, 5]) 
Y = np.array([1, 8, 4, 4, 1]) 
pts = np.vstack((X, Y)) 
# Find the B-spline representation of an N-dimensional curve 
tck, u = splprep(pts, s=0.0) 
u_new = np.linspace(u.min(), u.max(), 1000) 
# Evaluate a B-spline 
x_new, y_new = splev(u_new, tck) 
 
plt.plot(x_new, y_new, 'b--') 
plt.show() 

这会给你类似的东西:

您可以使用 splprep 参数来改变结果。 您可以在此 StackOverflow 中找到更多详细信息 post .