簡體   English   中英

為什么我不能在 python 中通過 B-spline 平滑這條曲線?

[英]Why I can't smooth this curve by B-spline in python?

我檢查了幾種不同的方法,但為什么我的曲線不能像其他人那樣平滑? 這是我的代碼和圖像。

from scipy.interpolate import splrep, splev
import matplotlib.pyplot as plt

list_x = [296, 297, 425, 460, 510, 532, 597, 601, 602, 611]
list_y = [2, 12, 67, 15, 21, 2037, 1995, 9, 39, 3]
bspl = splrep(list_x,list_y)
bspl_y = splev(list_x,bspl)
plt.figure()
plt.plot(list_x, bspl_y)   
plt.xticks(fontsize = 10)
plt.yticks(fontsize = 10)
plt.show()

您看不到插值,因為您為matplotlib了與用於原始數據表示的插值曲線相同的 10 個數據點。 我們必須創建一個更高分辨率的曲線:

from scipy.interpolate import splrep, splev
import matplotlib.pyplot as plt
import numpy as np

list_x = [296, 297, 425, 460, 510,  521,  597, 601, 602, 611]
list_y = [2,   12,   67, 15,  21,  2037, 1995, 9, 39, 3]
bspl = splrep(list_x,list_y, s=0)
#values for the x axis
x_smooth = np.linspace(min(list_x), max(list_x), 1000)
#get y values from interpolated curve
bspl_y = splev(x_smooth, bspl)
plt.figure()
#original data points
plt.plot(list_x, list_y, 'rx-')
#and interpolated curve
plt.plot(x_smooth, bspl_y, 'b')   
plt.xticks(fontsize = 10)
plt.yticks(fontsize = 10)
plt.show()

這是我們得到的輸出: 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM