簡體   English   中英

在python中,如何在繪圖中用平滑線連接點?

[英]in python, how to connect points with smooth line in plotting?

我試圖使用樣條曲線繪制點+平滑線。 但該線“超過”某些點,例如在以下代碼中,超過0.85點。

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

x=np.array([0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.9, 2])
y=np.array([0.57,0.85,0.66,0.84,0.59,0.55,0.61,0.76,0.54,0.55,0.48])

x_new = np.linspace(x.min(), x.max(),500)
y_smooth = spline(x, y, x_new)

plt.plot (x_new,y_smooth)
plt.scatter (x, y)

我如何解決它?

您可以嘗試在scipy.interpolate中使用interp1d:

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

x=np.array([0.1, 0.3, 0.5, 0.7, 0.9, 1.1, 1.3, 1.5, 1.7, 1.9, 2])
y=np.array([0.57,0.85,0.66,0.84,0.59,0.55,0.61,0.76,0.54,0.55,0.48])

x_new = np.linspace(x.min(), x.max(),500)

f = interp1d(x, y, kind='quadratic')
y_smooth=f(x_new)

plt.plot (x_new,y_smooth)
plt.scatter (x, y)

產量:

在此輸入圖像描述

kind參數的其他一些選項在文檔中:

kind:str或int,optional指定插值的類型為字符串('linear','nearest','zero','slinear','quadratic','cubic',其中'zero','slinear','quadratic '和'cubic'指的是第零,第一,第二或第三階的樣條插值)或指定要使用的樣條插值器的階數的整數。 默認為“線性”。

暫無
暫無

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

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